Python-Prime数字检查器 - 素数的乘积

时间:2015-05-18 20:43:30

标签: python primes

我编写了以下代码来检查数字是否为素数。虽然有更有效的方法可以做到这一点,但我确实注意到虽然这适用于最大的素数,但它会打破每个素数产品。因此,虽然它正确地将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)

3 个答案:

答案 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