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)