Python Prime数字查找器

时间:2016-04-24 16:56:32

标签: python python-3.x math

我已经制作了一个Prime数字查找器,您输入一个数字,它会告诉您天气是素数。

while True:
    p = int(input('Enter a number '))
    for d in range(2, p):
        if p % d == 0:
            print(p, "is not a prime number!", d,"*", p//d,"=",p)
            break
        else:
            print(p, "is a prime number!")
            break

然而,它显示的数字显然不是素数。我认为它只将它除以2,因为我尝试的所有奇数都输出为奇数。

任何人都可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

你必须先检查所有数字才能说出它的最佳状态。目前,您的循环在第一次检查时退出(d == 2),如果False则返回p % 2 == 0,否则True

您应该将else语句放在循环的末尾,如下所示:

while True:
    p = int(input('Enter a number '))
    for d in range(2, p):
        if p % d == 0:
            print(p, "is not a prime number!", d,"*", p//d,"=",p)
            break
    else:
        print(p, "is a prime number!")

仅当循环未以else结束时才执行break。这意味着如果没有找到任何分隔符,那么您的号码就是素数。

此外,请注意,您不必在p之前检查号码,您可以在sqrt(p)停留并逐两迭代:for d in range(3, int(p**0.5) + 1, 2)