【问题标题】:How do you find the first x prime numbers using python?你如何使用python找到前x个素数?
【发布时间】:2019-11-16 17:39:18
【问题描述】:
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 素数。我怀疑我需要一个计数器,但我不知道在哪里实现它。

【问题讨论】:

  • 你知道什么是质数吗?你知道如何只用纸和铅笔找到前 10 个素数吗?你应该让函数做你想做的事情。
  • 我已经实现了 isItPrime 来查找所有素数并将其添加到素数列表中。

标签: python python-3.x primes


【解决方案1】:

您只需要继续生成质数,直到您拥有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 是质数的个数,它们是完全不同的数字。 :)

【讨论】:

  • 是的,请注意@BriK,您的xPrimes 将多个素数x 作为参数,但是当您将yx 进行比较时,您是在比较下一个素数candidate,而不是已经生成的素数。
【解决方案2】:

这里的素数是什么?

您必须将 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)

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

【讨论】:

    【解决方案3】:

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

    首先,您问为什么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 循环中的表达式以继续循环,直到找到该数量的素数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-10
      • 1970-01-01
      • 2020-03-20
      • 2019-10-30
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多