我编写了以下代码来检查数字是否为素数。虽然有更有效的方法可以做到这一点,但我确实注意到虽然这适用于最大的素数,但它会打破每个素数产品。因此,虽然它正确地将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)
答案 0 :(得分:5)
return True
缩进太远了;它在循环内部并导致函数在第一次迭代时退出,因此您的函数实际上只检查数字是否为奇数。
def checkifprime(numtocheck):
for x in range(2, numtocheck):
if numtocheck % x == 0:
return False
return True
答案 1 :(得分:2)
你的程序永远不会比第一次迭代更远。你实际拥有的是偶数或奇数检查器。程序总是在循环的第一次迭代中返回。您过早地返回True
。
答案 2 :(得分:2)
return True
语句未正确缩进 - 您已将其置于for
循环内。因此,循环以2
开头,如果数字为奇数,则不会输入if
,然后返回True
。您应该在for
循环后放置此声明。只有当循环耗尽时,如果你没有找到任何适当的除数,你能否回答这个数字是一个素数:
def checkifprime(numtocheck):
for x in range(2,numtocheck):
if(numtocheck % x == 0):
return False
return True # Note the indendation