Eisspeedway

Sito Eratostenesa

Sito Eratostenesa
Ilustracja
Przykładowe działanie Sita Eratostenesa
Struktura danych

Tablica, lista

Złożoność
Czasowa

Pamięciowa

Sito Eratostenesaalgorytm wyznaczania wszystkich liczb pierwszych mniejszych od danej, czyli z zadanego przedziału [1]. Opiera się na eliminacji liczb złożonych.

Jest przypisywany Eratostenesowi z Cyreny, najpóźniej od XVIII wieku[2].

Własności sita Eratostenesa mogą być użyte do oszacowania wartości funkcji pi (π) – dowodu nierówności zrobił to w 1808 roku Adrien-Marie Legendre[3].

Algorytm ten udoskonalono; powstały bardziej wydajne jak sito Atkina.

Algorytm

Ze zbioru liczb naturalnych z przedziału tj. wybieramy najmniejszą, czyli 2, i wykreślamy wszystkie jej wielokrotności większe od niej samej, to jest

  2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60

Z pozostałych liczb wybieramy najmniejszą niewykreśloną liczbę (3) i usuwamy wszystkie jej wielokrotności większe od niej samej: przy czym nie przejmujemy się tym, że niektóre liczby (na przykład 6 czy 12) będą skreślane więcej niż raz.

  2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60

Według tej samej procedury postępujemy dla liczby 5.

  2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60

Następnie dla 7 aż do sprawdzenia wszystkich niewykreślonych wcześniej liczb.

  2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60

Wykreślanie powtarzamy do momentu, gdy liczba której wielokrotność wykreślamy, będzie większa niż

Dla danej liczby wszystkie niewykreślone liczby mniejsze, bądź równe są liczbami pierwszymi.

  2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60

Powyższy algorytm można zapisać w postaci następującego pseudokodu[4]:

Wejście: liczba całkowita n > 1
 
Niech A będzie tablicą wartości logicznych indeksowaną liczbami całkowitymi od 2 do n
początkowo wypełniona wartościami true
 
 for i := 2, 3, 4, ..., nie więcej niż 
  if A[i] = true:
    for j :=  2*i, 3*i, 4*i, ..., nie więcej niż n :
      A[j] := false
 
Wyjście: wartości i takie, że A[i] zawiera wartość true.

Przypisy

  1. Eratostenesa sito, [w:] Encyklopedia PWN [online], Wydawnictwo Naukowe PWN [dostęp 2021-10-02].
  2. publikacja w otwartym dostępie – możesz ją przeczytać Jeff Miller, Sieve of Eratosthenes, [w:] Earliest Known Uses of Some of the Words of Mathematics (S) (ang.), MacTutor History of Mathematics archive, University of St Andrews, mathshistory.st-andrews.ac.uk [dostęp 2023-06-10].
  3. publikacja w otwartym dostępie – możesz ją przeczytać Eratosthenes, sieve of (ang.), Encyclopedia of Mathematics, encyclopediaofmath.org [dostęp 2023-06-10].
  4. Eric W. Weisstein, Sieve of Eratosthenes, [w:] MathWorld, Wolfram Research [dostęp 2017-11-26] (ang.).

Linki zewnętrzne