Python 检查是否为质数
Python Checking if prime number
所以...下面是我的代码。我以我能想到的所有方式对其进行了更改,但无论我做什么,它都会说所有数字都是素数或所有数字都不是素数。我希望有人能指出明显的错误。
目前此代码表示所有数字都不是素数。
谢谢
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)
主要错误在这里:
x = int(math.sqrt(x))
您正在更改 x
,因此后续的整除性检查错误地使用了 x
的更改值。
您应该将平方根存储在不同的变量中:
sqrt_x = int(math.sqrt(x))
while i < sqrt_x + 1:
...
此外,数字 2 是素数,因为它只能被其自身和 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)
所以...下面是我的代码。我以我能想到的所有方式对其进行了更改,但无论我做什么,它都会说所有数字都是素数或所有数字都不是素数。我希望有人能指出明显的错误。 目前此代码表示所有数字都不是素数。 谢谢
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)
主要错误在这里:
x = int(math.sqrt(x))
您正在更改 x
,因此后续的整除性检查错误地使用了 x
的更改值。
您应该将平方根存储在不同的变量中:
sqrt_x = int(math.sqrt(x))
while i < sqrt_x + 1:
...
此外,数字 2 是素数,因为它只能被其自身和 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)