Eratostheneen seula

Wikipedia
Loikkaa: valikkoon, hakuun
Eratostheneen seula tietokoneanimaationa

Eratostheneen seula on kreikkalaisen filosofi Eratostheneksen kehittämä yksinkertainen algoritmi alkulukujen löytämiseen äärellisestä lukujoukosta. Se on tehokkain tapa löytää pienet (alle 10 miljoonaa) alkuluvut[1].

Algoritmi[muokkaa | muokkaa wikitekstiä]

Seulan toimintaperiaate (algoritmi) on seuraava:

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

Ilman viidennen kohdan rajoitusta algoritmi olisi aikaa vievä suurilla lukujoukoilla. Todistus väitteelle, ettei lukua \scriptstyle \sqrt{n} suurempia kokonaislukuja tarvitse tarkistaa lainkaan on viitteessä.[2]

Esimerkki[muokkaa | muokkaa wikitekstiä]

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[muokkaa | muokkaa wikitekstiä]

  1. The Prime Glossary: "The Sieve of Eratosthenes", http://primes.utm.edu/glossary/page.php?sort=SieveOfEratosthenes, references 16. November 2008.
  2. Ratkaisuja ohjaustehtäviin 3 – Tehtävä 3.3. Jyväskylän yliopisto. Viitattu 4.1.2009.

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]