|
|
发表于 2019-7-17 15:46:29
|
显示全部楼层
首先你要知道素数(质数)是什么,在大于1的自然数中,除了1和它本身以外不再有其他因数。对正整数n,如果用2到 根号n (也就是开平方数)之间的所有整数去除,均无法整除,则n为质数。
比如现在有个数字9,因式分解1x9=9,3x3=9,它能被它的开平方数3整除,所以9不是素数。开平方数是一个分割点,这个一定要理解清楚!
下面分三种情况进行:
第一种情况:输入的值是0或1,直接判定不是素数
第二种情况:这个值只要能被2到平方根之间的任意一个值整除,那么这个数就不是素数
第三种情况:除了上面的情况外,都是素数
ok,理解清楚了之后就开始写代码了。
- from math import sqrt
- def is_prime(n):
- if n == 1 or n == 0:
- return False
- # 当n=2时,range(2, int(sqrt(n)) + 1)也就是range(2,2)实际是一个空,不会产生任何结果
- for i in range(2, int(sqrt(n)) + 1):
- if n % i == 0:
- return False
- return True
- if __name__ == '__main__':
- v = input('请输入一个0-105之间数字:')
- if is_prime(int(v)):
- print('{}是素数'.format(int(v)))
- else:
- print('{}不是素数'.format(int(v)))
复制代码
最后几个点提醒下:
1、我这个代码没有做用户输入的判断,你需要自己加一些条件判断,将用户输入数字限定在0-105之间。
2、sqrt函数是系统自带的,封装在math包里面了,就是开平方。
3、函数从上到下执行的时候,只要满足了return的条件,后面的就不会执行了。return False即判断不是素数,return True判断是素数。
好了,就这么多,希望对你有帮助。
|
|