Najlepsze pytania
Chronologia
Czat
Perspektywa
Sito Eratostenesa
algorytm wyznaczania liczb pierwszych z zadanego przedziału Z Wikipedii, wolnej encyklopedii
Remove ads
Sito Eratostenesa – algorytm 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.
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
2 | 3 | 5 | 7 | 9 | |||||
11 | 13 | 15 | 17 | 19 | |||||
21 | 23 | 25 | 27 | 29 | |||||
31 | 33 | 35 | 37 | 39 | |||||
41 | 43 | 45 | 47 | 49 | |||||
51 | 53 | 55 | 57 | 59 |
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).
2 | 3 | 5 | 7 | ||||||
11 | 13 | 17 | 19 | ||||||
23 | 25 | 29 | |||||||
31 | 35 | 37 | |||||||
41 | 43 | 47 | 49 | ||||||
53 | 55 | 59 |
Według tej samej procedury postępujemy dla liczby 5, wykreślając
2 | 3 | 5 | 7 | ||||||
11 | 13 | 17 | 19 | ||||||
23 | 29 | ||||||||
31 | 37 | ||||||||
41 | 43 | 47 | 49 | ||||||
53 | 59 |
Następnie dla 7 wykreślamy:
2 | 3 | 5 | 7 | ||||||
11 | 13 | 17 | 19 | ||||||
23 | 29 | ||||||||
31 | 37 | ||||||||
41 | 43 | 47 | |||||||
53 | 59 |
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 | 5 | 7 | ||||||
11 | 13 | 17 | 19 | ||||||
23 | 29 | ||||||||
31 | 37 | ||||||||
41 | 43 | 47 | |||||||
53 | 59 |
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
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads