你如何使用 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]。我的代码打印所有素数 UP to 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)
这让我感到困惑,因为您无法获得输出 [2, 3, 5]
。当 testing_number
为 2 时,您将其加一,然后在再次检查 isItPrime
之前再次加一,检查 4。我假设 isItPrime
更新了一些全局数组 primes
。
我认为您想将代码和含义从 stop_at
更改为 number_of_primes
。如果是这样,您应该在函数开始时设置一个计数器 number_of_primes_found = 0
并在每次找到素数时加一。您应该更改 while
循环中的表达式以继续循环,直到找到该数量的素数。
祝你有美好的一天!继续编码!做笔记。
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]。我的代码打印所有素数 UP to 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)
这让我感到困惑,因为您无法获得输出 [2, 3, 5]
。当 testing_number
为 2 时,您将其加一,然后在再次检查 isItPrime
之前再次加一,检查 4。我假设 isItPrime
更新了一些全局数组 primes
。
我认为您想将代码和含义从 stop_at
更改为 number_of_primes
。如果是这样,您应该在函数开始时设置一个计数器 number_of_primes_found = 0
并在每次找到素数时加一。您应该更改 while
循环中的表达式以继续循环,直到找到该数量的素数。
祝你有美好的一天!继续编码!做笔记。