Czytając matematyczną literaturę, czasami można się natknąć na różne ciekawe obiekty, np. dywan (Sierpińskiego), wstęga (Mobiusa), butelka (Kleina), pierścień (Gaussa) czy łańcuch (Markowa). Dziś na warsztat weźmiemy sito, a konkretnie sito Eratostenesa.
Wszelkiego rodzaju sita i sitka charakteryzują się tym, że oddzielają od siebie pewne obiekty, mają otwory, które przepuszczają mniejsze cząsteczki, a zatrzymują większe.
Sito Eratostenesa odsiewa liczby złożone, a zostawia liczby pierwsze. Nazwa pochodzi od Eratostenesa z Cyreny, który żył na przełomie III i II wieku p.n.e.

Źródło: Wikipedia
Sito Eratostenesa to algorytm znajdowania liczb pierwszych mniejszych od danej liczby.
Przypomnę, jeśli nie pamiętasz, że liczby pierwsze to takie, które są podzielne tylko przez siebie i przez 1, wiec są one pod tym względem specjalne (oto kilka pierwszych liczb pierwszych:
).
Dla przykładu, jak szybko znaleźć liczby pierwsze mniejsze od
? Przy małych liczbach jeszcze jest łatwo sprawdzić, przez co się dzielą, ale jak na przykład dowiedzieć się, czy taka liczba
jest pierwsza???
Oczywiście można szukać wszystkich dzielników pojedynczo dla każdej liczby, ale po co, skoro można to szybko zrobić hurtowo.
Algorytm wygląda następująco (dla dowolnej liczby
):
- Wypisuję liczby od
do 
- Skreślam jedynkę
- Wybieram najmniejszą nieskreśloną liczbę i wykreślam wszystkie jej wielokrotności większe od niej
- Powtarzam powyższy krok aż liczba, której wielokrotności wykreślamy, przekroczy

- Nieskreślone liczby to wszystkie liczby pierwsze mniejsze od

Powyżej został podany przepis, zastosujmy go teraz w praktyce:
– wypisuję liczby od
do ![]()
– wykreślam jedynkę
– najmniejsza nieskreślona jest dwójka, wykreślam jej wielokrotności, skacząc co
, czyli: ![]()
– najmniejszą nieskreśloną jest trójka, więc wykreślam jej wielokrotności: ![]()
– czwórka już jest skreślona, idę dalej
– kolejna jest piątka, więc wykreślam: ![]()
– szóstka już jest skreślona, idę dalej
– kolejna jest siódemka, więc wykreślam: ![]()
– ósemka, dziewiątka i dziesiątka są już skreślone, idę dalej
– kolejna jest
, jest większa niż
, więc kończę procedurę
– niewykreślone są:
– są to liczby pierwsze

Wyjaśnienia dla dociekliwych:
– skreślamy wielokrotności danej liczby
, bo mamy pewność, że nie są one pierwsze (gdyż są podzielne przez tę liczbę
)
– pomijamy liczby już wykreślone, bo skoro są wykreślone, to dzielą się przez jakąś liczbę
, więc na pewno wszystkie jej wielokrotności też już zostały wykreślone przy okazji
(np. dla szóstki, już przy krokach dla
oraz dla
wykreśliliśmy wszystkie wielokrotności
, czyli
)
– kończymy algorytm na
, bo jeśli jakaś liczba byłaby podzielna przez liczbę większą od
, to też musiałaby mieć dzielnik mniejszy niż
(więc już jest skreślona); gdyby tak nie było, to oba dzielniki, które po wymnożeniu dają tę liczbę, byłyby większe od
, więc ta liczba musiałaby być większa niż
, a nas interesują liczby od
do
; dla przykładu, nie muszę wykreślać wielokrotności
, bo wszystkie liczby
już zostały skreślone przy okazji
odpowiednio, a liczba
już jest poza naszym zakresem
Ciekawostka dla osób uczących się programować: algorytm oparty na sicie Eratostenesa pojawia się jako jeden z przykładów zastosowania pętli.
____________
Ćwiczenie
Jeśli chcesz poćwiczyć działanie sita Eratostenesa, sprawdź, ile jest liczb pierwszych między 1 a 200.
Odpowiedź
46
Świetny artykuł, dzięki za info. Temat ciekawy i świetnie pozwalający rozwijać wyobraźnie.