Crivello di Eratostene

Niente fonti!
Questa voce o sezione sull'argomento matematica non cita le fonti necessarie o quelle presenti sono insufficienti.

Il crivello di Eratostene è un antico algoritmo per il calcolo delle tabelle di numeri primi fino a un certo numero prefissato. Questo principio deve il proprio nome al matematico Eratostene di Cirene, che ne fu l'ideatore. È ancora utilizzato come algoritmo di calcolo dei numeri primi da molti programmi per computer, per via della sua semplicità. Pur non essendo del tutto efficiente, infatti, è in compenso piuttosto semplice da tradurre in un qualsiasi linguaggio di programmazione.

Algoritmo

Animazione del crivello
Animazione del crivello

Il procedimento è il seguente: si scrivono tutti i numeri naturali a partire da 2 {\displaystyle 2} fino n {\displaystyle n} in un elenco detto setaccio. Poi si cancellano (setacciano) tutti i multipli del primo numero del setaccio (escluso lui stesso). Si prende poi il primo numero non cancellato maggiore di 2 {\displaystyle 2} e si ripete l'operazione con i numeri che seguono, proseguendo fino a che non si applica l'operazione all'ultimo numero per il quale c'è ancora almeno un suo multiplo. I numeri che restano sono i numeri primi minori o uguali a n {\displaystyle n} .

È come se si utilizzassero dei setacci a maglie via via più larghe: il primo lascia passare solo i numeri non multipli di 2 {\displaystyle 2} , il secondo solo i non multipli di 3 {\displaystyle 3} , e così via.

Nel caso n = 50 {\displaystyle n=50} , ad esempio, il procedimento di setacciatura si conclude con il numero 7 {\displaystyle 7} perché 7 {\displaystyle 7} è il massimo primo il cui quadrato non supera 50 {\displaystyle 50} e si può provare che il procedimento di setacciatura per ricercare i primi fino a un certo numero n {\displaystyle n} cessa sempre quando si supera la radice quadrata di n {\displaystyle n} . Infatti ogni numero a {\displaystyle a} del setaccio iniziale, contenente tutti i numeri naturali non superiori a un dato n {\displaystyle n} , cade dal setaccio che corrisponde al più piccolo dei suoi divisori primi.

Se indichiamo con p {\displaystyle p} il più piccolo divisore primo di a {\displaystyle a} si ha:

a = p r  con  r p . {\displaystyle a=p\cdot r{\text{ con }}r\geq p.}

Se ne deduce che a = p r p p = p 2 {\displaystyle a=p\cdot r\geq p\cdot p=p^{2}} , da cui p {\displaystyle p} è sempre minore o uguale alla radice quadrata di a {\displaystyle a} .

Una implementazione dell'algoritmo di Eratostene in Haskell che calcola l'n-esimo numero primo:

-- Una lista infinita di numeri primi prodotta
-- attraverso il metodo del crivello di Eratostene.
crivello :: [Int]
crivello = crivello' [2..]
  where
    crivello' :: [Int] -> [Int]
    crivello' (p:ps) = p : crivello' [i | i <- ps, mod i p /= 0]
    crivello' _ = undefined

-- Estrai il n-esimo numero primo.
eratostene :: Int -> Int
eratostene n = crivello !! n

Esempio

Per trovare tutti i numeri primi minori di 30 {\displaystyle 30} , si può procedere come segue:

  • Scrivere la lista di tutti i numeri interi da 2 {\displaystyle 2} a 30 {\displaystyle 30} :
  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
  • Cancellare dalla lista i multipli di 2 {\displaystyle 2} :
  2  3     5     7     9    11    13    15    17    19    21    23    25    27    29
  • Il primo numero della lista dopo il 2 {\displaystyle 2} è il 3 {\displaystyle 3} ; cancellare dalla lista i multipli di 3 {\displaystyle 3} :
  2  3     5     7          11    13          17    19          23    25          29
  • Il primo numero della lista dopo il 3 {\displaystyle 3} è il 5 {\displaystyle 5} ; cancellare dalla lista i rimanenti multipli di 5 {\displaystyle 5} :
  2  3     5     7          11    13          17    19          23                29
  • Il primo numero della lista dopo il 5 {\displaystyle 5} è il 7 {\displaystyle 7} : non essendoci più suoi multipli, i numeri restanti sono i numeri primi che cercavamo.


Altri progetti

Altri progetti

  • Wikibooks
  • Wikimedia Commons
  • Collabora a Wikibooks Wikibooks contiene testi o manuali sul crivello di Eratostene
  • Collabora a Wikimedia Commons Wikimedia Commons contiene immagini o altri file sul crivello di Eratostene

Collegamenti esterni

  • Eratostene, crivello di, in Enciclopedia della Matematica, Istituto dell'Enciclopedia Italiana, 2013. Modifica su Wikidata
  • (EN) sieve of Eratosthenes, su Enciclopedia Britannica, Encyclopædia Britannica, Inc. Modifica su Wikidata
  • (EN) Eric W. Weisstein, Crivello di Eratostene, su MathWorld, Wolfram Research. Modifica su Wikidata
  • (EN) Crivello di Eratostene, su Encyclopaedia of Mathematics, Springer e European Mathematical Society. Modifica su Wikidata
  Portale Matematica: accedi alle voci di Wikipedia che trattano di matematica