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