Python 判断素数,两个小问题
本帖最后由 Peteryo01223 于 2021-4-1 17:09 编辑原题:判断素数
答案:如下(我自己写的注释):
import math # 导入math模块
def is_prime(number): # 定义函数名称
if number > 1: # 设定取值范围为正整数
if number == 2: # 单独把 2 认定为素数
return True
if number % 2 == 0: # 排除所有偶数,减少计算量
return False
for current in range (3, int(math.sqrt(number) + 1),2): # 从3开始,在number开平方的结束,步幅是2。但是,为什么要加一?
if number % current == 0:
# 公元250 BC,古希腊数学家埃拉托塞尼提出:“要得到不大于某个自然数 N 的所有素数
# 只要在2 至 N中,将不大于的素数的倍数全部划去即可”。
# 内容等价转换:如果N是合数,则它有一个因子d满足1<d≤sqrt N
return False
return True # ? 何意?
return False
问题:
1. 第9句,为何要加一?
2. 第15句和上面哪一句呼应?为何突然出现一个return True,没看懂。 1、对于语句
for c in range(a , b)
循环中,c 值最大只能到 b - 1,所以
for current in range (3, int(math.sqrt(number) + 1),2):
加 1 是为了让 current 的最大值能等于 int(math.sqrt(number))
2、return 是用来结束函数调用,反馈调用结果的。在 for 循环内有一个 return False,意思是进入循环前,假定 number 是一个素数,然后,试图在 for 循环内进行否定,就是说,如果在循环中找到了 number 的因数,那么,number 就不是素数,这时,执行 return False,函数调用随之结束;如果 for 循环可以被顺利地执行完(而没有执行 return False),那么,就说明 number 确实就是一个素数,所以,return True jackz007 发表于 2021-4-1 17:55
1、对于语句
循环中,c 值最大只能到 b - 1,所以
谢谢您的耐心解答~
页:
[1]