Я пытаюсь распечатать простые числа в определенном диапазоне и решил go с помощью сегментированного сита Эратосфена найти простые числа от 2 до sqrt (n) и использовать найденные простые числа в списке для печати исключить простые числа из любого диапазона, так что число в диапазоне, не делимое ни на одно из чисел в списке сита, оказывается простым.
Мой код работает для небольших диапазонов, таких как от 2 до 10 и От 3 до 5, но начинает распечатывать дубликаты, а также не простые числа для больших n. Любая помощь в этом?
from math import sqrt, ceil
#Creating segmented sieve
start=2
stop=1000000000
sieve=[i for i in range(2,ceil(sqrt(stop)+1))]
for num in range(0,len(sieve)):
num2=num+1
while num2<len(sieve):
if sieve[num2]%sieve[num]==0:
sieve.pop(num2)
num2+=1
else:
num2+=1
#printing primes from start to stop using primes in sieve to ignore their multiples
for n in range(start,stop+1):
if n==sieve[0]:
print(n)
continue
if n%sieve[0]==0:
continue
else:
p=1
while p<len(sieve):
if n==sieve[p]:
print(n)
p+=1
continue
if n%sieve[p]==0:
p+=1
continue
else:
p+=1
print(n)