确定数字是否是python中的主要示例

时间:2018-11-28 23:00:08

标签: python-3.x

我正在练习python。尝试编写一个简单的程序来确定数字是否为质数。在我的代码中,数字2没有显示结果,而数字9表示是质数...啊!我显然在这里缺少一些逻辑...我在做什么错。


num = int(input("number? "))

if num > 1:
    for i in range(2, num):
        if (num % i)==0:
            print(num, "Not Prime")
            break
        else:
            print(num, "Is Prime")
            break
else:
    print(num, "is never prime")

2 个答案:

答案 0 :(得分:0)

您的逻辑在几个地方有些偏离。

1)break语句的两个分支中都有if语句,因此您仅测试2的可除性。一旦找到除数,就完成了(您知道数字是复合的),但如果没有,则需要继续检查。

2)num % num始终等于0。您只需要检查可能的除数,最大为sqrt(num)

答案 1 :(得分:0)

您遇到的问题是,您在第一次迭代中就跳出了循环,而没有真正经历从inum的整个范围。您实际上只是在测试是否num % 2 = 0

尝试以下方法:

import math

num = int(input("number? "))

if num > 1:
    for i in range(2, math.sqrt(num)):
        # Run through all the numbers until we encounter a case where
        # num is divisible by i or we have gone through all possibilities.
        if (num % i)==0:
            prime = false
            break
        else:
            prime = true

    # Here we print the result.
    # This is outside the loop to prevent it from being printed each iteration.
    if prime:
        print(num, "Is Prime")
    else:
        print(num, "Is not Prime")

else:
    print(num, "is never prime")