<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://jardin.cscsp.ch/index.php?action=history&amp;feed=atom&amp;title=Crivello_di_Eratostene</id>
	<title>Crivello di Eratostene - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://jardin.cscsp.ch/index.php?action=history&amp;feed=atom&amp;title=Crivello_di_Eratostene"/>
	<link rel="alternate" type="text/html" href="https://jardin.cscsp.ch/index.php?title=Crivello_di_Eratostene&amp;action=history"/>
	<updated>2026-04-12T00:15:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://jardin.cscsp.ch/index.php?title=Crivello_di_Eratostene&amp;diff=451&amp;oldid=prev</id>
		<title>imported&gt;Pil56: sistemazione fonti, smistamento lavoro sporco e fix vari</title>
		<link rel="alternate" type="text/html" href="https://jardin.cscsp.ch/index.php?title=Crivello_di_Eratostene&amp;diff=451&amp;oldid=prev"/>
		<updated>2025-06-28T16:19:53Z</updated>

		<summary type="html">&lt;p&gt;sistemazione fonti, smistamento lavoro sporco e fix vari&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{F|algoritmi|maggio 2017}}&lt;br /&gt;
Il &amp;#039;&amp;#039;&amp;#039;crivello di Eratostene&amp;#039;&amp;#039;&amp;#039; è un antico [[algoritmo]] per il calcolo dei [[numero primo|numeri primi]] fino a un certo numero prefissato. Deve il proprio nome al [[matematica|matematico]] [[Antica Grecia|greco antico]] [[Eratostene di Cirene]], che ne fu l&amp;#039;ideatore. È ancora utilizzato per il calcolo dei numeri primi da molti [[Programma (informatica)|programmi]] per [[computer]], per via della sua semplicità. Pur non essendo particolarmente rapido ed efficiente, infatti, è piuttosto semplice da implementare in un qualsiasi [[linguaggio di programmazione]].&lt;br /&gt;
&lt;br /&gt;
== Algoritmo ==&lt;br /&gt;
[[File:Sieve of Eratosthenes animation.gif|right|Animazione del crivello]]&lt;br /&gt;
&lt;br /&gt;
Il procedimento è il seguente: si scrivono tutti i numeri naturali a partire da &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt; fino &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; in un elenco, detto setaccio. In seguito si cancellano (setacciano) tutti i multipli del primo numero del setaccio escluso lui stesso. Si prende poi il primo numero non cancellato maggiore di &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt; e si cancellano tutti i suoi multipli eccetto lui, e si ripete questa operazione fino a che il primo numero non cancellato maggiore di &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt; non presenta multipli tra i numeri rimasti nell&amp;#039;elenco. I numeri che restano sono i [[numero primo|numeri primi]] minori o uguali a &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
È come se si utilizzassero dei setacci a maglie via via più larghe: il primo lascia passare solo i numeri non multipli di &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;, il secondo solo i non multipli di &amp;lt;math&amp;gt;3&amp;lt;/math&amp;gt;, e così via.&lt;br /&gt;
&lt;br /&gt;
Nel caso &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt;, ad esempio, il procedimento di setacciatura si conclude con il numero &amp;lt;math&amp;gt;7&amp;lt;/math&amp;gt; perché &amp;lt;math&amp;gt;7&amp;lt;/math&amp;gt; è il massimo numero primo il cui quadrato non supera &amp;lt;math&amp;gt;50&amp;lt;/math&amp;gt;; si può provare che il procedimento di setacciatura per ricercare i primi fino a un certo numero &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; termina sempre quando si raggiunge la [[radice quadrata]] di &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Ogni numero &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; del setaccio iniziale, contenente tutti i numeri naturali non superiori a un dato &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;, cade dal setaccio che corrisponde al più piccolo dei suoi [[fattorizzazione|divisori primi]].&lt;br /&gt;
&lt;br /&gt;
Se indichiamo con &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; il più piccolo divisore primo di &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; si ha:&lt;br /&gt;
:&amp;lt;math&amp;gt;a = p \cdot r \text{ con } r \ge p.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se ne deduce che &amp;lt;math&amp;gt;a = p \cdot r \ge p \cdot p = p^2&amp;lt;/math&amp;gt;, da cui &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; è sempre minore o uguale alla [[radice quadrata]] di &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Una implementazione dell&amp;#039;algoritmo di Eratostene in [[Haskell (linguaggio)|Haskell]] che calcola l&amp;#039;n-esimo numero primo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
-- Una lista infinita di numeri primi prodotta&lt;br /&gt;
-- attraverso il metodo del crivello di Eratostene.&lt;br /&gt;
crivello :: [Int]&lt;br /&gt;
crivello = crivello&amp;#039; [2..]&lt;br /&gt;
  where&lt;br /&gt;
    crivello&amp;#039; :: [Int] -&amp;gt; [Int]&lt;br /&gt;
    crivello&amp;#039; (p:ps) = p : crivello&amp;#039; [i | i &amp;lt;- ps, mod i p /= 0]&lt;br /&gt;
    crivello&amp;#039; _ = undefined&lt;br /&gt;
&lt;br /&gt;
-- Estrai il n-esimo numero primo.&lt;br /&gt;
eratostene :: Int -&amp;gt; Int&lt;br /&gt;
eratostene n = crivello !! n&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Esempio ===&lt;br /&gt;
&lt;br /&gt;
Per trovare tutti i numeri primi minori di &amp;lt;math&amp;gt;30&amp;lt;/math&amp;gt;, si può procedere come segue:&lt;br /&gt;
&lt;br /&gt;
* Scrivere la lista di tutti i numeri interi da &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt; a &amp;lt;math&amp;gt;30&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  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&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Cancellare dalla lista i multipli di &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  2  3     5     7     9    11    13    15    17    19    21    23    25    27    29&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Il primo numero ancora presente nella lista dopo il &amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt; è il &amp;lt;math&amp;gt;3&amp;lt;/math&amp;gt;; cancellare dalla lista i rimanenti multipli di &amp;lt;math&amp;gt;3&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  2  3     5     7          11    13          17    19          23    25          29&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Il primo numero ancora presente nella lista dopo il &amp;lt;math&amp;gt;3&amp;lt;/math&amp;gt; è il &amp;lt;math&amp;gt;5&amp;lt;/math&amp;gt;; cancellare dalla lista i rimanenti multipli di &amp;lt;math&amp;gt;5&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  2  3     5     7          11    13          17    19          23                29&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Il primo numero ancora presente nella lista dopo il &amp;lt;math&amp;gt;5&amp;lt;/math&amp;gt; è il &amp;lt;math&amp;gt;7&amp;lt;/math&amp;gt;: non essendoci più nessun multiplo di &amp;lt;math&amp;gt;7&amp;lt;/math&amp;gt; nella lista, i numeri restanti sono i numeri primi cercati.&lt;br /&gt;
&lt;br /&gt;
== Altri progetti ==&lt;br /&gt;
{{interprogetto|preposizione=sul}}&lt;br /&gt;
&lt;br /&gt;
== Collegamenti esterni ==&lt;br /&gt;
{{Collegamenti esterni}}&lt;br /&gt;
&lt;br /&gt;
{{Algebra}}&lt;br /&gt;
{{Teoria dei numeri}}&lt;br /&gt;
{{Portale|matematica}}&lt;br /&gt;
&lt;br /&gt;
[[Categoria:Algoritmi per la matematica]]&lt;br /&gt;
[[Categoria:Scienza ellenistica]]&lt;br /&gt;
[[Categoria:Numeri primi]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Pil56</name></author>
	</entry>
</feed>