Sito Eratostenesa

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

Dodaj komentarz