[英]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_at
为number_of_primes
。 如果是这样,您应该在 function 的开头设置一个计数器number_of_primes_found = 0
,并在每次找到素数时添加一个。 您应该更改while
循环中的表达式以继续循环,直到找到该数量的素数。
祝你有美好的一天。 继续编码! 记笔记。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.