簡體   English   中英

在 Python 中生成素數列表

[英]Generating a list of prime numbers in Python

我正在使用此代碼獲取最多為 integer 'x' 的素數列表,但我不確定我錯在哪里。

from math import sqrt

def prime_detector(x):
    for i in range(3, x+1):
        numbers = []
        Status = True
        for j in range(2, int(sqrt(i)+1)+1):
            if i%j == 0:
                Status = False
        if Status == True:
            numbers += [i]
    return numbers

print(prime_detector(20))

將號碼移到外面,它會起作用

from math import sqrt
def prime_detector(x):
    numbers = []
    for i in range(3, x+1):
        Status = True
        for j in range(2, int(sqrt(i)+1)+1):
            if i % j == 0:
                Status = False
                break
        if Status == True:
            numbers += [i]
    return numbers
print(prime_detector(20))

移動編號 object 在 for 循環內,object 的 scope 很重要:) 並且它將起作用

from math import sqrt
def prime_detector(x):
    numbers = []
    for i in range(3, x+1):
        Status = True
        for j in range(2, int(sqrt(i)+1)+1):
            if i % j == 0:
                Status = False
                break
        if Status == True:
            numbers += [i]
    return numbers
print(prime_detector(20))

上面的代碼還有一個問題:- 2 是一個素數,我們不打算處理這種情況。 因此,如果您想在列表中包含 2,只需在上面的代碼中將其設為:- number = [2]

如果你想改進它而不是使用 step as 6,並用 j 和 j+2 檢查條件。 它將為您提供更優化的解決方案。

暫無
暫無

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

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