鱼C论坛

 找回密码
 立即注册
查看: 1003|回复: 3

帮忙!谢谢,刚刚接触phthon

[复制链接]
发表于 2019-7-17 14:12:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
hi,这道题是这样的,在0-105数字中,哪一些属于质数?(提示,就是在随便输入一个数字,会打印出该数字是不是质数的答案出来,谢谢)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-7-17 14:17:15 From FishC Mobile | 显示全部楼层
百度都很多
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-17 15:02:20 | 显示全部楼层
  1. import math

  2. while True:
  3.     while True:
  4.         x = input('输入一个数字:')
  5.         if len(x) > 0 :
  6.             if x . isdigit():
  7.                 if int(x) < 2:
  8.                     print('这个数字必须大于 1 !')
  9.                 else:
  10.                     break
  11.             else:
  12.                 print('您输入的不是数字!')
  13.         else:
  14.             break
  15.     if len(x) > 0:
  16.         d = int(x)
  17.         e = int(math . sqrt(d + 1)) + 1
  18.         f = True
  19.         for b in range(2 , e) :
  20.             if d % b == 0:
  21.                 f = False
  22.                 break
  23.         if f:
  24.             print('%d 是质数' % d)
  25.         else:
  26.             print('%d 不是质数' % d)
  27.     else:
  28.         break        
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-7-17 15:46:29 | 显示全部楼层
首先你要知道素数(质数)是什么,在大于1的自然数中,除了1和它本身以外不再有其他因数。对正整数n,如果用2到 根号n (也就是开平方数)之间的所有整数去除,均无法整除,则n为质数。

比如现在有个数字9,因式分解1x9=9,3x3=9,它能被它的开平方数3整除,所以9不是素数。开平方数是一个分割点,这个一定要理解清楚!

下面分三种情况进行:
第一种情况:输入的值是0或1,直接判定不是素数
第二种情况:这个值只要能被2到平方根之间的任意一个值整除,那么这个数就不是素数
第三种情况:除了上面的情况外,都是素数

ok,理解清楚了之后就开始写代码了。


  1. from math import sqrt

  2. def is_prime(n):
  3.     if n == 1 or n == 0:
  4.         return False
  5.     # 当n=2时,range(2, int(sqrt(n)) + 1)也就是range(2,2)实际是一个空,不会产生任何结果
  6.     for i in range(2, int(sqrt(n)) + 1):
  7.         if n % i == 0:
  8.             return False
  9.     return True

  10. if __name__ == '__main__':
  11.     v = input('请输入一个0-105之间数字:')
  12.     if is_prime(int(v)):
  13.         print('{}是素数'.format(int(v)))
  14.     else:
  15.         print('{}不是素数'.format(int(v)))
复制代码



最后几个点提醒下:
1、我这个代码没有做用户输入的判断,你需要自己加一些条件判断,将用户输入数字限定在0-105之间。
2、sqrt函数是系统自带的,封装在math包里面了,就是开平方。
3、函数从上到下执行的时候,只要满足了return的条件,后面的就不会执行了。return False即判断不是素数,return True判断是素数。

好了,就这么多,希望对你有帮助。

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-16 23:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表