Generatore di Numeri Primi Online
Cos’è un numero primo?
Un numero primo è un numero naturale maggiore di 1 che è divisibile solo per 1 e per se stesso. I numeri primi più piccoli sono 2, 3, 5, 7, 11, 13, 17, 19, 23, 29… Il numero 2 è l’unico numero primo pari; tutti gli altri numeri pari sono divisibili per due.
Numeri come 4 (= 2 × 2), 6 (= 2 × 3) o 15 (= 3 × 5) non sono numeri primi; li chiamiamo numeri composti.
Come funziona il generatore?
Per elencare tutti i numeri primi in un intervallo, utilizziamo il Crivello di Eratostene – uno degli algoritmi più antichi ed efficaci, descritto dal matematico greco Eratostene di Cirene intorno al 240 a.C.
L’algoritmo elimina progressivamente i multipli di ogni numero primo trovato. Ciò che rimane sono i numeri primi. L’intero calcolo avviene direttamente nel tuo browser – nessun dato viene inviato al server.
Per la selezione casuale, il generatore crea prima un elenco di tutti i numeri primi nell’intervallo e quindi ne seleziona casualmente il numero desiderato utilizzando un generatore crittograficamente sicuro (crypto.getRandomValues()).
Funzionalità del generatore
- Tutti i numeri primi – elenca ogni numero primo nell’intervallo specificato (max 10.000)
- Selezione casuale – seleziona N numeri primi casuali dall’intervallo (adatto per intervalli grandi)
- Ordinamento – ordina i risultati in ordine crescente
- Separatore – scegli come i numeri saranno separati durante la copia
- Preset rapidi – gli intervalli più comuni con un solo clic
Dove vengono utilizzati i numeri primi?
Crittografia e sicurezza
I numeri primi sono la base della crittografia moderna. Algoritmi come RSA funzionano sul principio che il prodotto di due grandi numeri primi è facile da calcolare, ma la scomposizione inversa in fattori primi è computazionalmente molto difficile.
- Crittografia RSA – le chiavi sono generate da due grandi numeri primi
- Diffie-Hellman – scambio di chiavi su un modulo primo
- Funzioni hash – numeri primi come costanti magiche (SHA, MD5)
Matematica e scienza
- Teoria dei numeri – elementi costitutivi fondamentali degli interi
- Congettura di Goldbach – ogni numero pari > 2 può essere espresso come la somma di due numeri primi (ancora non dimostrato)
- Ipotesi di Riemann – uno dei problemi di Hilbert, riguarda la distribuzione dei numeri primi
Usi pratici
- Tabelle hash – la dimensione della tabella come numero primo riduce le collisioni
- Generatore di numeri pseudo-casuali – congruenza lineare con un modulo primo
- Musica e ritmo – poliritmi con lunghezze di ciclo prime
Distribuzione dei numeri primi
I numeri primi sono distribuiti irregolarmente tra i numeri naturali, ma la loro densità diminuisce con l’aumentare dell’intervallo. Questo è descritto dal Teorema dei numeri primi: il numero di numeri primi fino a N è approssimativamente N / ln(N).
| Intervallo | Numero di numeri primi |
|---|---|
| 1–10 | 4 |
| 1–100 | 25 |
| 1–1 000 | 168 |
| 1–10 000 | 1 229 |
| 1–100 000 | 9 592 |
| 1–1 000 000 | 78 498 |
Il Crivello di Eratostene passo dopo passo
Intervallo 2–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]
1. Seleziona 2, elimina i multipli: 4, 6, 8, 10, 12...
2. Seleziona 3, elimina i multipli: 9, 15, 21, 27...
3. Seleziona 5, elimina i multipli: 25...
4. √30 ≈ 5.5 → fatto
Numeri primi: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29
Il Crivello di Eratostene nel codice
JavaScript
function sieve(to) {
const composite = new Uint8Array(to + 1);
const primes = [];
for (let p = 2; p <= to; p++) {
if (composite[p]) continue;
primes.push(p);
for (let j = p * p; j <= to; j += p) composite[j] = 1;
}
return primes;
}
Python
def sieve(n):
composite = bytearray(n + 1)
primes = []
for p in range(2, n + 1):
if not composite[p]:
primes.append(p)
for j in range(p * p, n + 1, p):
composite[j] = 1
return primes