我想寫一個總理篩發生器,我轉換爲列表打印,然後打印給定範圍內的素數。我很確定我的對數是正確的,但出於某種原因,我在我的素數列表中得到了一些額外的值,這些值並不是素數。 (我馬上就發現了這個,因爲我輸出的最後一個值是3599,這不是素數)。 我真的不知道,如果我有某種邏輯錯誤,所以任何幫助將是真棒總理篩/範圍內的對
def sieve(n):
a = [True] * (n)
a[0] = a[1] = False
for (i, isPrime) in enumerate(a):
if isPrime:
yield i
for n in range(i*i, n, i):
a[n] = False
def pairs(li):
pair = 0
for i, x in enumerate(li):
if i < len(li)-1:
if li[i] + 2 == li[i+1]:
pair += 1
return pair
p_3600 = list(sieve(3600))
ans = [vals for vals in p_3600 if vals > 1600]
print ans
print "pairs:", pairs(ans)
@讓FrançoisFabre是啊,你說得對,sorr關於這一點。我只是搞亂了界限,看看我能否弄清楚爲什麼我會得到一些額外的數字。那應該是n。 – greenteam