Eratostheneen seula

Eratostheneen seula on kreikkalaisen filosofi Eratostheneksen kehittämä yksinkertainen algoritmi kaikkien alkulukujen löytämiseen äärellisestä lukujoukosta. Se on tehokkain tapa löytää pienet (alle 10 miljoonaa) alkuluvutThe Prime Glossary: "The Sieve of Eratosthenes", http://primes.utm.edu/glossary/page.php?sort=SieveOfEratosthenes, references 16. November 2008..

 Algoritmi 

Seulan toimintaperiaate (algoritmi) on seuraava:

 Kirjoitetaan lista kaikista luonnollisista luvuista alkaen kakkosesta ja päättyen johonkin valittuun suurimpaan lukuun n.
 Poistetaan listasta kaikki luvun 2 monikerrat (4, 6, 8 jne.).
 Listan seuraava jäljellä oleva luku on alkuluku.
 Poistetaan listasta kaikki ne luvut, jotka ovat sekä edellisessä vaiheessa löydettyä alkulukua suurempia että sen monikertoja.
 Toistetaan vaiheita 3 ja 4, kunnes listan seuraava jäljellä oleva luku on suurempi kuin listan suurimman luvun n neliöjuuri.
 Nyt listassa on jäljellä vain alkulukuja.

Viidennen kohdan rajoitus lyhentää algoritmin suoritusaikaa suuresti varsinkin suurilla n:n arvoilla.  Käsittely voidaan lopettaa jo tässä vaiheessa, koska jokainen luonnollinen luku m, joka ei ole alkuluku, voidaan esittää kahden luonnollisen a ja b tulona: m = a · b, joista kumpikaan ei ole 1 eikä m. Jos tässä a ≠ b, on joko  ja . Näin ollen jokaisella luvulla m < n, joka ei ole alkuluku,
on ainakin yksi tekijä, joka on pienempi kuin , ja näin ollen jokainen tällainen luku on tähän kohtaan saavuttaessa jo käsitelty. 

 Esimerkki 

Kun halutaan tietää kaikki sataa pienemmät alkuluvut, kirjoitetaan listaan luvut 2—100. Aloitetaan pienimmästä luvusta kaksi, joka on alkuluku, ja poistetaan sillä jaolliset luvut 4, 6, 8, ..., 100. Nyt pienin jäljellä oleva luku on kolme, sekin alkuluku, jonka monikerrat 6, 9, 12, ..., 99 poistetaan. Koska neljä on poistettu, se ei ole alkuluku, ja siirrytään viiteen. Kun on poisto-operaatioissa on saavutettu sadan neliöjuuri 10, kaikki muut kuin alkuluvut on poistettu listasta.

Lähteet

 Aiheesta muualla 

 Interaktiivinen animaatio

Luokka:Lukuteoria
Luokka:Algoritmit