Najlepsze pytania
Chronologia
Czat
Perspektywa

Sito Eratostenesa

algorytm wyznaczania liczb pierwszych z zadanego przedziału Z Wikipedii, wolnej encyklopedii

Sito Eratostenesa
Remove ads

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

Szybkie fakty Struktura danych, Czasowa ...

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.

Remove ads

Algorytm

Podsumowanie
Perspektywa

Ze zbioru liczb naturalnych z przedziału tj. wybieramy najmniejszą, czyli 2, i wykreślamy wszystkie jej wielokrotności poczynając od jej kwadratu 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 wykreślamy wszystkie jej wielokrotności poczynając od czyli: (przy czym niektóre liczby będą skreślane więcej niż raz, np. 18 jako wielokrotność 2 i wielokrotność 3).

 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, wykreślając

 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 wykreślamy:

 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 kolejna wybrana liczba będzie większa niż ponieważ pierwsza "kandydatka" do skreślenia będzie już poza zbiorem:

Wszystkie liczby z które nie zostały wykreślone, 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ększe niż 
  if A[i] = true:
    for j := i*i, i*(i+1), i*(i+2), ..., nie większe niż n:
      A[j] := false
 
Wyjście: wartości i takie, że A[i] zawiera wartość true.
Remove ads

Przypisy

Linki zewnętrzne

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads