簡體   English   中英

如何使用 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]。 我的代碼將所有素數打印到 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_atnumber_of_primes 如果是這樣,您應該在 function 的開頭設置一個計數器number_of_primes_found = 0 ,並在每次找到素數時添加一個。 您應該更改while循環中的表達式以繼續循環,直到找到該數量的素數。

祝你有美好的一天。 繼續編碼! 記筆記。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM