Python 检查是否为质数

标签 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)

最佳答案

主要错误在这里:

x = int(math.sqrt(x)) 

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

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

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

此外,数字 2 是质数,因为它只能被其自身和 1 整除。

关于Python 检查是否为质数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28018840/

相关文章:

c - 在 C 中判断一个数是否为素数

C++ 打印奇数而不是素数

python - 如何在抽象类中调用非抽象方法?

python - "driver.find_element_by_css_selector"不工作。如何解决这个异常?

Python 3 将包含字母的字符串中的数字总数相加

python - 错误 : Shapes (1, 4) 和 (14,14) 未对齐

在数组中生成素数时出现 C 段错误

python - 在 Scrapy 中使用 start_request 和使用 cookie 在网站上工作的正确方法是什么

python - 将元组更改为小写 - 特定情况(Python;NLTK)

python - 使用打印时,与 "+"连接是否比与 ","分隔更有效?