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

 23 45 67 89 10
11 1213 1415 1617 1819 20
21 2223 2425 2627 2829 30
31 3233 3435 3637 3839 40
41 4243 4445 4647 4849 50
51 5253 5455 5657 5859 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.

 23 45 67 8 9 10
11 1213 14 15 1617 1819 20
21 2223 2425 26 27 2829 30
31 32 33 3435 3637 38 39 40
41 4243 44 45 4647 4849 50
51 5253 5455 56 57 5859 60

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

 23 45 67 8 9 10
11 1213 14 15 1617 1819 20
21 2223 24 25 26 27 2829 30
31 32 33 34 35 3637 38 39 40
41 4243 44 45 4647 4849 50
51 5253 54 55 56 57 5859 60

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

 23 45 67 8 9 10
11 1213 14 15 1617 1819 20
21 2223 24 25 26 27 2829 30
31 32 33 34 35 3637 38 39 40
41 4243 44 45 4647 48 49 50
51 5253 54 55 56 57 5859 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 [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

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.