繁体   English   中英

如何使用 python 找到前 x 个素数?

[英]How do you find the first x prime numbers using python?

def xPrimes(x) :
  y = 2
  while y < x :
      if isItPrime(y) == True :
        y += 1
      y += 1
  print(primes)

我是 python 的初学者,我无法让程序执行所需的操作。 我也不完全理解我的程序是做什么的。 当我执行 xPrimes(5) 时,它给了我 [2,3,5] 而不是 [2,3,5,7,11]。 我的代码将所有素数打印到 x 而不是 x 素数。 我怀疑我需要一个计数器,但我不知道在哪里实现它。

您只需要继续生成质数,直到您拥有x质数。 如果您要返回结果列表,您的计数器就是该列表的长度。

def xPrimes(x: int) -> List[int]:
    primes: List[int] = []
    y = 1
    while(len(primes) < x):
        y += 1
        if isItPrime(y):
            primes.append(y)
    return primes

请注意, y是质数, x是质数的数量,它们是完全不同的数字。 :)

这里的素数是什么?

您必须将 x 视为计数器并且不要与 y 比较,因为 y 是素数而不是计数器

相反,你可以做这样的事情

def xPrimes(x) :
  y = 2
  index = 0
  while index < x :
      if isItPrime(y) == True :
        y += 1
        index+= 1
      y += 1
  print(primes)

你可以看到,我使用索引作为计数器并在我得到素数时增加它

家庭作业是一次冒险和尝试的机会!

首先,您问为什么xPrimes(5)给您最多 5。当 y < x 时停止循环,并且 y 每次都上升。 这表明您可能会因使用小变量名而迷失方向。 你可以通过重命名来让你的代码看起来像这样:

def primes_up_to_number(stop_at) :
  testing_number = 2
  while testing_number < stop_at :
      if isItPrime(testing_number) == True :
        testing_number += 1
      testing_number += 1
  print(primes)

这让我很困惑,因为您无法获得 output [2, 3, 5] testing_number为 2 时,向其添加一个,然后在再次检查isItPrime之前再次添加一个,检查 4。我假设isItPrime更新了一些全局数组primes

我认为您想将代码和含义从stop_atnumber_of_primes 如果是这样,您应该在 function 的开头设置一个计数器number_of_primes_found = 0 ,并在每次找到素数时添加一个。 您应该更改while循环中的表达式以继续循环,直到找到该数量的素数。

祝你有美好的一天。 继续编码! 记笔记。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM