【发布时间】:2015-05-18 20:43:29
【问题描述】:
我编写了以下代码来检查一个数字是否为素数。虽然有更有效的方法可以做到这一点,但我确实注意到,虽然这适用于最大的素数,但它会破坏每个素数的乘积。因此,虽然它正确地将 13 和 17 识别为素数,但它也将 91 (13 × 7) 识别为素数。任何想法为什么?
def checkifprime(numtocheck):
for x in range(2,numtocheck):
if(numtocheck % x == 0):
return False
return True
answer = checkifprime(91)
print (answer)
【问题讨论】:
-
您只需要检查给定数字的(~平方根+1)以内的数字。
-
在循环外检查偶数,然后您只需检查循环中的奇数:3、5、7、9 ...。正如corn3lius所说,一旦达到数字的平方根,您就可以停止检查。