Sito Eratostenesa
Przykładowe działanie Sita Eratostenesa | |
Struktura danych | |
---|---|
Złożoność | |
Czasowa | |
Pamięciowa |
Sito Eratostenesa – przypisywany Eratostenesowi z Cyreny algorytm wyznaczania liczb pierwszych z zadanego przedziału [1].
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 | 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 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 | 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.
2 | 3 | 5 | 7 | ||||||
11 | 13 | 17 | 19 | ||||||
23 | 29 | ||||||||
31 | 37 | ||||||||
41 | 43 | 47 | 49 | ||||||
53 | 59 |
Następnie dla 7 aż do sprawdzenia wszystkich niewykreślonych wcześniej liczb.
2 | 3 | 5 | 7 | ||||||
11 | 13 | 17 | 19 | ||||||
23 | 29 | ||||||||
31 | 37 | ||||||||
41 | 43 | 47 | |||||||
53 | 59 |
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 | 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[2]:
Wejście: liczba całkowita n > 1
Niech A będzie tablicą typów 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.
Zobacz też
Przypisy
- ↑ Eratostenesa sito, [w:] Encyklopedia PWN [online] [dostęp 2021-10-02] .
- ↑ Eric W. Weisstein , Sieve of Eratosthenes, [w:] MathWorld [online], Wolfram Research [dostęp 2017-11-26] (ang.).
Linki zewnętrzne
Media użyte na tej stronie
Autor: SKopp z niemieckiej Wikipedii, Licencja: CC-BY-SA-3.0
Animation that visualizes the "Sieve of Eratosthenes" algorithm.
The Sieve of Eratosthenes is an method for efficiently finding all prime numbers up to a number, 120 in this case, by eliminating (colouring in) all multiples of successive primes. It uses the common optimisation of starting at p2 for each prime p, as all non-primes (composites) up to p2 were found in previous passes. Because of this it needs only consider primes up to 7, because the square of the next prime 11 is 121, larger than any number here.