如何使用python查找前x个质数?

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,5,7,11]。我的代码将所有素数打印到x而不是x素数。我怀疑我需要一个计数器,但不知道在哪里实现。

liuxiaoming110 回答:如何使用python查找前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

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)

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

我认为您想将代码和含义从stop_at更改为number_of_primes。如果是这样,则应在函数启动时设置一个计数器number_of_primes_found = 0,并在每次找到素数时向其添加一个计数器。您应该在while循环中更改表达式以保持循环,直到找到该素数为止。

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

本文链接:https://www.f2er.com/3089231.html

大家都在问