Python中的Prime Checker

时间:2019-07-04 11:53:04

标签: python-3.x

这是一个程序,它将吸收用户所需的数字,并使用'mod'(%)检查它是否为质数。

我已经弄清楚了它的逻辑,因为使用范围函数来限制其重复的时间,并使用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,有时会错误地将其标记为素数。

3 个答案:

答案 0 :(得分:1)

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

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起作用,以便else块仅在for语句未过早结束break循环的情况下运行。最好不使用if-else,因为实际上确实需要在循环的每一遍中设置“ This is prime”值。

答案 1 :(得分:0)

如果要修复方法,应更改为=而不是+=

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

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


Please type in your number: 49
This is not prime
Please type in your number: 65
This is not prime
Please type in your number: 13
This is prime

答案 2 :(得分:-2)

num = 20

如果num> 1:

对于范围为(2,num)的i:if(num%i)== 0:

print(num,“不是素数”)

print(i,“ times”,num // i,“ is”,num)

休息 其他: print(num,“是素数”)

其他: print(num,“不是素数”)

输出 20不是素数 2乘以10就是20

19是质数