Python检查素数

时间:2015-01-19 06:11:23

标签: python python-3.x primes

所以......这是我下面的代码。我改变了所有我能想到的方式,但不管我做了什么,它都会说所有数字都是素数或所有数字都不是素数。我希望有人可以指出明显的错误。 目前这段代码表示所有数字都不是素数。 感谢。

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)

2 个答案:

答案 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)