所以我对Python比较陌生并试图定义一个函数来检查数字是否为素数。代码如下:
def prime(x):
if x < 2:
return False
elif x == 2:
return True
else:
for i in range(3, int((x**0.5)+1)):
if x % i == 0:
return False
else:
return True
这似乎适用于大多数值,但它在25等特定值上失败,任何人都可以帮忙向我解释原因吗?谢谢!
答案 0 :(得分:2)
return
会离开您的功能。让我们看一下25
的情况。
x<2
没有,所以继续。x==2
没有,所以继续。x
可以i(=3)
整除吗?不,所以转到else
子句,return True
离开函数。查看问题?
换句话说,对于足够大 x
,您的功能相当于:
def prime_prime(x):
if x < 2:
return False
elif x == 2:
return True
else:
if x % 3 == 0:
return False
else:
return True
答案 1 :(得分:0)
else:
子句,它检查的第一个i
将使其返回true。
相反,写一下
else:
for i in range(3, int((x**0.5)+1)):
if x % i == 0:
return False
return True
编辑:
正如@mata指出的那样,你实际上需要从2开始,所以它应该是for i in range(2, int((x**0.5)+1)):