我编写了以下代码来检查数字是否为质数。虽然有更有效的方法来做到这一点,但我确实注意到,虽然这种方法适用于最大的质数,但它对质数的每个乘积都是无效的。因此,虽然它正确地将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)发布于 2015-05-19 04:46:40
return True缩进过多;它位于循环内部,导致函数在第一次迭代时退出,所以您的函数实际上只检查一个数字是否为奇数。
def checkifprime(numtocheck):
for x in range(2, numtocheck):
if numtocheck % x == 0:
return False
return True发布于 2015-05-19 04:47:28
你的程序不会比第一次迭代走得更远。你实际上拥有的是一个奇偶性检查器。程序总是在循环的第一次迭代中返回。您返回True太早了。
发布于 2015-05-19 04:48:40
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 indendationhttps://stackoverflow.com/questions/30312487
复制相似问题