Sito Eratostenesa to algorytm wyznaczania wszystkich liczb pierwszych mniejszych od zadanej liczby, czyli przedziału [2, n].
Algorytm opracował grecki matematyk, filozof, atronom – Eratostenes.
def sieve_of_eratosthenes(num):
prime = [True for i in range(num+1)] # tablica przechowująca flagi informujące, czy liczba jest pierwsza
res = []
p = 2
while (p * p <= num):
# Jeżeli flaga liczby p nie została zmieniona, to jest to liczba pierwsza
if (prime[p] == True):
# Zmiana flag wszystkich wielokrotności p
for i in range(p * p, num+1, p):
prime[i] = False
p += 1
# Wypisz wszystkie liczby pierwsze
for p in range(2, num+1):
if prime[p]:
print(p, end=" ")
sieve_of_eratosthenes(30)
# Wynik: 2 3 5 7 11 13 17 19 23 29