Générateur de nombres premiers en ligne
Qu’est-ce qu’un nombre premier ?
Un nombre premier est un entier naturel supérieur à 1 qui n’a que deux diviseurs distincts : 1 et lui-même. Les plus petits nombres premiers sont 2, 3, 5, 7, 11, 13, 17, 19, 23, 29… Le nombre 2 est le seul nombre premier pair – tous les autres nombres pairs sont divisibles par deux.
Des nombres comme 4 (= 2 × 2), 6 (= 2 × 3) ou 15 (= 3 × 5) ne sont pas des nombres premiers – on les appelle des nombres composés.
Comment fonctionne le générateur ?
Pour lister tous les nombres premiers dans une plage, nous utilisons le crible d’Ératosthène – l’un des algorithmes les plus anciens et les plus efficaces, décrit par le mathématicien grec Ératosthène de Cyrène vers 240 av. J.-C.
L’algorithme élimine progressivement les multiples de chaque nombre premier trouvé. Ce qui reste sont les nombres premiers. Le calcul entier se déroule directement dans votre navigateur – aucune donnée n’est envoyée au serveur.
Pour la sélection aléatoire, le générateur construit d’abord une liste de tous les nombres premiers dans la plage, puis en sélectionne aléatoirement le nombre désiré à l’aide d’un générateur cryptographiquement sécurisé (crypto.getRandomValues()).
Fonctionnalités du générateur
- Tous les nombres premiers – liste chaque nombre premier dans la plage spécifiée (max. 10 000)
- Sélection aléatoire – sélectionne N nombres premiers aléatoires dans la plage (adapté aux grandes plages)
- Tri – triez les résultats par ordre croissant
- Séparateur – choisissez comment les nombres seront séparés lors de la copie
- Préréglages rapides – les plages les plus courantes en un clic
Où sont utilisés les nombres premiers ?
Cryptographie et sécurité
Les nombres premiers sont la base de la cryptographie moderne. Des algorithmes comme RSA reposent sur le principe qu’il est facile de calculer le produit de deux grands nombres premiers, mais que la factorisation inverse en facteurs premiers est très difficile sur le plan informatique.
- Chiffrement RSA – les clés sont générées à partir de deux grands nombres premiers
- Diffie-Hellman – échange de clés sur un module premier
- Fonctions de hachage – les nombres premiers comme constantes magiques (SHA, MD5)
Mathématiques et science
- Théorie des nombres – les blocs de construction fondamentaux des nombres entiers
- Conjecture de Goldbach – tout nombre pair > 2 peut être exprimé comme la somme de deux nombres premiers (encore non prouvé)
- Hypothèse de Riemann – l’un des problèmes de Hilbert, concerne la distribution des nombres premiers
Utilisations pratiques
- Tables de hachage – la taille de la table en tant que nombre premier réduit les collisions
- Générateurs de nombres pseudo-aléatoires – congruence linéaire avec un module premier
- Musique et rythme – polyrythmies avec des longueurs de cycle premières
Distribution des nombres premiers
Les nombres premiers sont distribués irrégulièrement parmi les entiers naturels, mais leur densité diminue avec l’augmentation de la plage. C’est ce que décrit le Théorème des nombres premiers : le nombre de nombres premiers jusqu’à N est approximativement N / ln(N).
| Plage | Nombre de nombres premiers |
|---|---|
| 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 |
Le crible d’Ératosthène étape par étape
Plage 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. Choisissez 2, barrez ses multiples : 4, 6, 8, 10, 12...
2. Choisissez 3, barrez ses multiples : 9, 15, 21, 27...
3. Choisissez 5, barrez ses multiples : 25...
4. √30 ≈ 5.5 → terminé
Nombres premiers : 2, 3, 5, 7, 11, 13, 17, 19, 23, 29
Le crible d’Ératosthène en code
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