这是一个程序,它将吸收用户所需的数字,并使用'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,有时会错误地将其标记为素数。
答案 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是质数