[英]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.