所以......这是我下面的代码。我改变了所有我能想到的方式,但不管我做了什么,它都会说所有数字都是素数或所有数字都不是素数。我希望有人可以指出明显的错误。 目前这段代码表示所有数字都不是素数。 感谢。
import math
x = int(input('Enter a number: '))
def isPrime(x):
if x==2:
print ("The number you entered is not Prime.")
return
i = 2
x = int(math.sqrt(x))
while i < x+1:
if x%i==0:
print ("The number you entered is not Prime.")
return
i = i+1
print ("This number is Prime")
return
isPrime(x)
答案 0 :(得分:3)
主要错误在于:
x = int(math.sqrt(x))
您正在改变x
,因此后续的可分割性检查错误地使用了此x
的更改值。
您应该将平方根存储在另一个变量中:
sqrt_x = int(math.sqrt(x))
while i < sqrt_x + 1:
...
此外,数字2是素数,因为它只能被自身和一个整除。
答案 1 :(得分:1)
应删除平方根线,并进行次要编辑以使其有效。
是的,请修改你的缩进
import math
def isPrime(x):
i = 2
#x = int(math.sqrt(x))
while i < x:#x+1:
z = x%i
print "i: ", i, " x: ", x, "x%i: ", z
if z==0:
print ("The number you entered is not Prime.")
return
i = i+1
print ("This number is Prime")
return
x = int(input('Enter a number: '))
isPrime(x)