Я пытаюсь написать генератор первичного сита, который я конвертирую в список для печати, а затем печатаю простые числа в заданном диапазоне. Я уверен, что число пар правильное, но по некоторым причинам я получаю некоторые дополнительные значения в моем списке простых чисел, которые не являются первичными. (Я сразу понял это, потому что мое последнее значение на выходе было 3599, которое не является простым). Я не совсем уверен, что если у меня есть какое-то логическая ошибка, так что любая помощь будет удивительнойPrime Sieve/pairs в диапазоне
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