首页 > 解决方案 > python中的Prime Checker

问题描述

这是一个程序,它将接收用户所需的数字并使用“mod”(%)检查它是否是素数。

我已经弄清楚了它的逻辑,因为使用 range 函数来限制它重复的次数,并使用 mod 来说明任何数字是否有余数为零(除了一个和它本身),那么它必须是一个素数。

number = int(input("Please type in your number"))

prime = ""
for a in range (2, number):
    if number % a == 0:
        prime = prime + "This is not prime"
        break
    else:
        prime = prime + "This is prime"
print (prime)

最大的问题之一是对于某些数字(例如 49),它会将结果显示为“这是素数这是素数这是素数这是素数这是素数这不是素数”。对于其他一些数字,例如 65,它有时会错误地将其标记为质数。

标签: python-3.x

解决方案


只需最少的修复即可轻松获得正确的行为:

number = int(input("Please type in your number: "))

for a in range(2, number):
    if number % a == 0:
        prime = "This is not prime"
        break
else:
    prime = "This is prime"

print(prime)

只有当循环没有被语句提前结束时for-else,块才会运行。使用 this 比使用 更好,因为确实不需要在循环的每一次传递中设置“This is prime”值。elseforbreakif-else


推荐阅读