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

2024-10-03 09:10:50 发布

您现在位置: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素数。我怀疑我需要一个计数器,但我不知道在哪里实现它。你知道吗


Tags: 代码程序trueifdef计数器素数primes
3条回答

家庭作业是一次冒险,也是一次实验的机会!你知道吗

首先,你问为什么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)

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

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

祝你今天愉快!继续编码!记笔记。你知道吗

什么是素数?你知道吗

你必须把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)

你们可以看到,我用索引作为计数器,当我得到素数时,它就递增

你只需要不断生成素数,直到你有了它们。如果您返回一个结果列表,那么计数器就是该列表的长度。你知道吗

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是素数的个数,它们是完全不同的数。:)

相关问题 更多 >