Seta lui Eratostene
Această intrare sau secțiune despre matematică nu citează sursele necesare sau cei prezenți sunt insuficienți . |
Sita Eratostene este un algoritm antic pentru calcularea tabelelor numerelor prime până la un anumit număr predeterminat. Acest principiu își datorează numele matematicianului Eratostene din Cirene , care a fost creatorul acestuia. Este încă folosit ca algoritm de număr prim de multe programe de calculator datorită simplității sale. Deși nu este complet eficient, de fapt, este destul de simplu de tradus în orice limbaj de programare .
Algoritm
Procedura este următoarea: toate numerele naturale sunt scrise începând de la pana cand într-o listă numită sită. Apoi, toți multiplii primului număr al sitei sunt șterse (cernute) (exclusiv el însuși). Primul număr ne șters mai mare decât este apoi luat iar operația se repetă cu numerele care urmează, continuând până când operația este aplicată ultimului număr care nu a fost șters. Restul numerelor sunt numere prime mai mici sau egale cu .
Este ca și cum s-ar folosi site cu ochiuri mai mari treptat: primul permite numai numere non-multiple de , al doilea numai non-multipli ai , si asa mai departe.
In caz de exemplu, procesul de cernere se termină cu numărul deoarece este maximul prim al cărui pătrat nu depășește și se poate dovedi că procesul de cernere pentru a căuta primul până la un anumit număr încetează întotdeauna când se depășește rădăcina pătrată a lui . Într-adevăr, fiecare număr a sitei inițiale, care conține toate numerele naturale care nu depășesc un dat , cade din sită care corespunde celui mai mic dintre separatoarele sale prime .
Dacă indicăm cu cel mai mic divizor prim al avem:
Rezultă că , de la care este întotdeauna mai mică sau egală cu rădăcina pătrată a .
O implementare a algoritmului lui Eratostene în Haskell care calculează al n-lea număr prim:
takePrime :: Int -> Int
takePrime = takePrimeAux [ 2 .. ]
Unde
takePrimeAux :: [ Int ] -> Int -> Int
takePrimeAux ( l : ls ) 1 = l
takePrimeAux ( l : ls ) n = takePrimeAux ( filter ( \ x -> ( mod x l ) / = 0 ) ls ) ( n - 1 )
Exemplu
Pentru a găsi toate numerele prime mai mici decât , puteți proceda după cum urmează:
- Scrieți lista tuturor numerelor întregi din la :
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
- Ștergeți din listă multiplii de :
2 3 5 7 9 11 13 15 17 19 21 23 25 27 29
- Primul număr de pe listă după si ; ștergeți multiplii de :
2 3 5 7 11 13 17 19 23 25 29
- Primul număr de pe listă după si ; ștergeți din listă multiplii rămași ai :
2 3 5 7 11 13 17 19 23 29
- Primul număr de pe listă după si , deoarece nu mai există multipli, numerele rămase sunt numerele prime pe care le căutam.
Alte proiecte
- Wikimedia Commons conține imagini sau alte fișiere pe site-ul Eratostene
linkuri externe
- ( EN ) Sider of Eratosthenes , pe Encyclopedia Britannica , Encyclopædia Britannica, Inc.