【问题标题】:Python Checking if prime number [duplicate]Python检查是否是素数[重复]
【发布时间】:2015-03-17 02:48:12
【问题描述】:

所以...这是我下面的代码。我以我能想到的所有方式对其进行了更改,但无论我做什么,它都会说所有数字都是质数或所有数字都不是质数。我希望有人能指出明显的错误。 目前,此代码表示所有数字都不是素数。 谢谢。

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 是质数..
  • 您需要修复缩进,您的代码将无法按原样运行。
  • 请修正缩进。没有它,我们只能猜测你的代码结构。
  • 关于素数和 Python 的 SO 上有大约一百万个问题。我建议你通读其中的一些。

标签: python python-3.x primes


【解决方案1】:

主要错误在这里:

x = int(math.sqrt(x)) 

您正在更改 x,因此后续的整除性检查错误地使用了 x 的更改值。

您应该将平方根存储在不同的变量中:

sqrt_x = int(math.sqrt(x)) 
while i < sqrt_x + 1:
   ...

此外,数字 2 是素数,因为它只能被自身和一整除。

【讨论】:

    【解决方案2】:

    平方根线应该被删除,并且一个小的编辑将使它工作。

    是的,请修正你的缩进

    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)
    

    【讨论】:

      猜你喜欢
      • 2011-05-06
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 2011-06-13
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      相关资源
      最近更新 更多