Générateur de liste de nombres premiers

Générez tous les nombres premiers dans l'intervalle de votre choix — de 2 à 10 000 000 — par crible d'Ératosthène segmenté. Statistiques, distribution, lacunes et jumeaux calculés instantanément. Calcul entièrement local, aucune donnée envoyée.

Paramètres du crible

Le crible d'Ératosthène : 2 200 ans d'algorithme, toujours optimal pour les petits n

Ératosthène de Cyrène (276–194 av. J.-C.) a décrit un procédé de sélection des nombres premiers qui reste, 22 siècles plus tard, l'algorithme le plus efficace pour lister tous les premiers jusqu'à n lorsque la mémoire disponible n'est pas un facteur limitant. Sa complexité O(n log log n) en temps et O(n) en mémoire n'a pas été améliorée de façon asymptotique pour ce problème spécifique — preuve que l'intuition géométrique grecque anticipait la théorie de la complexité moderne.

Distinction cruciale : tester si un nombre est premier (problème de primalité) et lister tous les premiers jusqu'à n (problème d'énumération) sont deux problèmes différents avec des solutions optimales différentes. Pour l'énumération, le crible d'Ératosthène bat systématiquement la division d'essai individuelle à partir de n ≈ 30, car chaque multiple n'est éliminé qu'une seule fois, sans division répétée.

Comment fonctionne le crible — et pourquoi la version segmentée change tout

Crible classique (simple)

  1. Créer un tableau booléen de taille n+1, tout initialisé à vrai
  2. Marquer 0 et 1 comme non-premiers
  3. Pour chaque p de 2 à √n : si p est encore vrai, marquer tous les multiples de p (à partir de p²) comme faux
  4. Collecter tous les indices restants à vrai

Limite : pour n = 10⁷, le tableau booléen occupe ~10 Mo en RAM — acceptable. Pour n = 10⁹, il faudrait ~1 Go — problématique dans un navigateur.

Crible segmenté (cet outil)

  1. Calculer d'abord les premiers jusqu'à √n par crible classique
  2. Diviser [2, n] en segments de taille L (typiquement L = 32 768)
  3. Pour chaque segment, utiliser les premiers déjà trouvés pour barrer les multiples locaux
  4. La mémoire active est O(√n + L) — constante par rapport à n

Avantage : le segment tient dans le cache L1/L2 du processeur (32–256 Ko), ce qui accélère les accès mémoire d'un facteur 10 à 100 par rapport aux accès RAM.

Limite n Premiers trouvés π(n) Mémoire (simple) Temps (crible simple) Temps (segmenté)
1 0001681 Ko< 0,1 ms< 0,1 ms
10 0001 22910 Ko< 0,5 ms< 0,5 ms
100 0009 592100 Ko~2 ms~1 ms
1 000 00078 4981 Mo~20 ms~8 ms
10 000 000664 57910 Mo~250 ms~60 ms
100 000 0005 761 455100 Mo~3 s~0,7 s

3 utilisations concrètes d'une liste de premiers que les tutoriels n'expliquent pas

Usage 1 — Génération de clés RSA : constituer un « pool » de candidats premiers

Lors de la génération d'une clé RSA 2048 bits, la bibliothèque cryptographique ne tire pas un nombre au hasard et ne le teste pas. Elle constitue d'abord un crible des petits premiers (jusqu'à ~100 000) pour éliminer rapidement 80 % des candidats aléatoires avant d'appliquer un test de Miller-Rabin coûteux. Cette technique s'appelle le trial division sieving.

Probabilité qu'un n aléatoire de 2048 bits soit premier≈ 1 / ln(2¹⁰²⁴) ≈ 1 / 710
Avec crible des 1 229 premiers jusqu'à 10 000Élimine 80 % → teste seulement 1 candidat sur ~3,5 par Miller-Rabin
Gain de temps sur génération complèteFacteur ×4 à ×6 selon la plage
Nb. d'appels Miller-Rabin pour générer une clé RSA-2048~100 à 200 tests en moyenne

Notre liste de 9 592 premiers jusqu'à 100 000, générée en ~2 ms, suffit à implémenter un pre-sieve efficace pour des candidats de taille quelconque.

Usage 2 — Algorithmique compétitive : précalculer le crible une fois, l'utiliser des milliers de fois

Dans les compétitions de programmation (Codeforces, LeetCode, USACO), de nombreux problèmes demandent de tester la primalité de milliers de nombres dans un seul programme. La stratégie optimale est de pré-calculer le crible une seule fois en O(n log log n), puis de répondre à chaque requête en O(1) par simple accès au tableau.

Méthode naïve : tester chaque n individuellementO(√n) × k requêtes = O(k√n)
Crible précalculé une foisO(n log log n) + O(k) = O(n log log n)
Pour k = 10 000 requêtes, n = 10⁶Naïf : 10⁷ ops — Crible : 5 × 10⁶ ops une seule fois
Pattern universel en compétition« Sieve once, query forever »

La liste générée ici peut être copiée en texte brut et collée directement dans un array JavaScript, Python ou C++ comme constante précalculée.

Usage 3 — Analyse musicale et composition : les tempéraments basés sur des rapports premiers

En acoustique musicale, les intervalles les plus consonants correspondent à des rapports de fréquences impliquant de petits nombres premiers. La limite première (prime limit) d'un système d'accordage détermine sa richesse harmonique : un système 5-limit (2, 3, 5) donne la gamme juste, un système 7-limit ajoute les septièmes naturelles, un 11-limit les quarts de ton, etc.

Octave (2/1)Rapport impliquant uniquement le premier 2
Quinte juste (3/2)Premiers 2 et 3
Tierce majeure juste (5/4)Premiers 2 et 5 — absente du tempérament pythagoricien (3-limit)
Septième harmonique (7/4)Premier 7 — clairement audible dans le jazz et le blues
Fondement théoriqueLa liste des premiers détermine la hiérarchie des consonances naturelles

Harry Partch (1901–1974) a construit des instruments microtonaux basés sur un système 11-limit, utilisant les 5 premiers {2, 3, 5, 7, 11}. La liste des premiers jusqu'à 100 suffit à explorer l'ensemble des rapports harmoniques pertinents pour la composition contemporaine.

Distribution des premiers : régularité globale, irrégularité locale

La distribution des nombres premiers est l'un des sujets les plus étudiés des mathématiques. Les résultats statistiques que cet outil calcule automatiquement s'inscrivent dans un contexte théorique riche :

Densité par décade

Intervalleπ(n)DensitéMoy. n/ln(n)
1 → 10440,0 %—
1 → 1002525,0 %21,7 (−13 %)
1 → 1 00016816,8 %144,8 (−14 %)
1 → 10 0001 22912,3 %1085 (−12 %)
1 → 100 0009 5929,6 %8686 (−9 %)
1 → 1 000 00078 4987,8 %72 382 (−8 %)
1 → 10 000 000664 5796,6 %620 421 (−7 %)

Lacunes remarquables dans [2, 10⁷]

Entre deux premiers consécutifs, les lacunes (gaps) sont distribuées de façon irrégulière. Les plus grandes lacunes dans notre plage :

Après le premierLacunePremier suivant
7411
23629
89897
11314127
9 551369 587
31 3977231 469
155 92186156 007
360 65396360 749
2 010 7331482 010 881
4 652 3531544 652 507
La conjecture de Cramér (1936) : les lacunes entre premiers consécutifs autour de n sont au plus O(ln²n). En pratique, la plus grande lacune avant 10⁷ est 154 — contre ln²(4 652 353) ≈ 225. La conjecture semble confortable, mais n'est pas prouvée. Des variantes récentes (conjecture de Granville) suggèrent que la constante pourrait être supérieure à 1 dans ln²(n).

Premiers jumeaux : distribution et conjecture de Brun

Une paire de premiers jumeaux est une paire (p, p+2) où les deux sont premiers : (3,5), (5,7), (11,13), (17,19), (29,31)… Leur distribution se raréfie mais, contrairement aux intuitions, ne semble jamais s'arrêter complètement.

Jusqu'à nPaires jumellesDensité relative
100832 % des premiers
1 0003520,8 %
10 00020516,7 %
100 0001 22412,8 %
1 000 0008 16910,4 %
10 000 00058 9808,9 %

Constante de Brun B₂

En 1919, Viggo Brun a prouvé que la somme des inverses des premiers jumeaux converge :

(1/3 + 1/5) + (1/5 + 1/7) + (1/11 + 1/13) + … = B₂ ≈ 1,902 160 583…

Cette convergence prouve que les jumeaux sont « rares » au sens analytique. En contraste, la somme des inverses de tous les premiers (série de Mertens) diverge logarithmiquement — les premiers sont donc plus « denses » que les jumeaux, dans un sens précis.

Optimisations du crible non documentées dans les tutoriels classiques

La plupart des implémentations en ligne du crible d'Ératosthène s'arrêtent à la version basique. Les optimisations suivantes réduisent le temps d'exécution d'un facteur 3 à 10 pour des intervalles larges :

Optimisation Principe Gain typique Implémentée ici
Exclure les pairsNe stocker que les impairs (2 traité séparément) — divise la mémoire par 2×1,5 à ×2✓
Commencer à p²Les multiples de p inférieurs à p² ont déjà été barrés par de plus petits premiers×1,2✓
SegmentationTaille de segment = cache L1/L2 → accès mémoire ×10 plus rapides×3 à ×10✓ (TypedArray Uint8)
Exclure multiples de 3Traiter 2 et 3 séparément, ne stocker que les ≡ 1,5 mod 6×1,33 supplémentairePartiel
Roue mod 30Traiter 2,3,5 séparément, ne garder que 8 résidus sur 30×1,875 supplémentairePour grands n
ParallélisationWeb Workers pour traiter plusieurs segments simultanément×nb_cœursNon (simplicité)

Le crible d'Ératosthène dans les langages modernes : pièges et bonnes pratiques 2026

Erreurs fréquentes d'implémentation

  • Commencer les multiples à 2p au lieu de p² — coût inutile ×2
  • Utiliser un tableau de booléens JavaScript ordinaires au lieu de Uint8Array — mémoire ×8
  • Oublier de traiter le cas p = 2 séparément dans les variantes impairs-seulement
  • Tenter de générer jusqu'à 10⁹ en mémoire simple — crash navigateur (1 Go de RAM)
  • Ne pas initialiser sieve[0] = sieve[1] = false avant de collecter les résultats
  • Confondre la limite du crible avec la limite de recherche d'un intervalle [a, b]

Bonnes pratiques 2026

  • Utiliser Uint8Array (JS) ou bytearray (Python) — 8× moins de mémoire qu'un booléen
  • Pour un intervalle [a, b] avec a grand : crible segmenté depuis √b, pas depuis 2
  • Toujours vérifier : le nombre de premiers jusqu'à n doit être ≈ n / ln(n) ± 15 %
  • Pour n > 10⁷ dans un navigateur : utiliser un Web Worker pour ne pas bloquer l'UI
  • Exporter en CSV compressé (gzip côté client via CompressionStream API) pour > 100 000 premiers
  • Combiner avec le testeur de primalité individuel pour valider des cas limites

Decision guide — Quel outil choisir selon votre besoin ?

Besoin Outil recommandé Pourquoi
Savoir si UN nombre est premierTesteur de primalitéPlus rapide, avec décomposition et propriétés
Lister tous les premiers jusqu'à n ≤ 10⁷Cette pageCrible d'Ératosthène optimal, export intégré
Lister les premiers dans [a, b] avec a grandCette page (intervalle personnalisé)Crible segmenté depuis √b, efficace même pour a = 9 900 000
Calculer PGCD ou PPCM de deux nombresCalculatrice PGCDAlgorithme d'Euclide, plus rapide que la factorisation
Simplifier une fractionSimplificateur de fractionsUtilise le PGCD, pas la liste de premiers
Premiers > 10⁷ (cryptographie)Bibliothèque dédiée (OpenSSL, libgmp)Miller-Rabin déterministe, impossible à faire en navigateur

Calculatrices complémentaires

Questions fréquentes

Pourquoi le crible d'Ératosthène commence-t-il à p² et non à 2p ?

Parce que tous les multiples de p inférieurs à p² ont déjà été barrés par les premiers plus petits que p. Par exemple, quand on traite p = 7, les multiples 14 (= 2×7), 21 (= 3×7), 35 (= 5×7), 42 (= 6×7) ont déjà été éliminés lors des passes de p = 2, 3, 5 et 6. Le premier multiple non encore barré est 7² = 49. Commencer à 2p est donc un travail redondant qui augmente le nombre d'opérations sans affecter le résultat.

Pourquoi n'existe-t-il pas de formule simple pour le n-ième nombre premier ?

La distribution des premiers est déterministe mais pseudo-aléatoire localement. Des formules approximatives existent — le n-ième premier pₙ est proche de n ln n pour n grand — mais aucune formule close et exacte ne permettant de calculer pₙ directement sans énumération. La formule de Mills (A × 3^(3ⁿ) donne toujours un premier) existe en théorie mais nécessite la constante A dont la valeur exacte est inconnue et dépend elle-même de la connaissance des premiers. En pratique, lister par crible reste la seule approche tractable.

Peut-on générer des premiers au-delà de 10 000 000 avec cet outil ?

Non — la limite de 10 000 000 est choisie pour que le crible tienne en mémoire du navigateur (< 10 Mo) et s'exécute en moins d'une seconde sur un appareil moyen. Au-delà, le crible simple nécessiterait une implémentation segmentée avec Web Workers, hors du scope d'un outil web généraliste. Pour générer des listes très larges (jusqu'à 10⁹), des programmes dédiés comme primesieve (C++) atteignent 10⁹ en moins de 5 secondes sur un PC standard.

Combien y a-t-il de paires de premiers jumeaux inférieures à 10 000 000 ?

Exactement 58 980 paires jumelles dans [2, 10 000 000]. La plus grande paire dans cet intervalle est (9 999 971, 9 999 973). La conjecture des nombres premiers jumeaux — qu'il en existe une infinité — n'est pas prouvée. En 2013, Yitang Zhang a démontré qu'il existe une infinité de paires de premiers séparés d'au plus 70 millions, réduit ensuite à 246 par le projet Polymath8. La borne optimale conjecturée est 2 (paires jumelles), mais cette dernière étape reste hors de portée des mathématiques actuelles.

La liste de premiers est-elle utile pour calculer le PGCD ou le PPCM ?

Indirectement. Le PGCD peut se calculer par décomposition en facteurs premiers (PGCD = produit des facteurs communs avec les exposants minimum), mais l'algorithme d'Euclide est bien plus rapide et ne nécessite aucune liste de premiers. La liste est utile si vous devez factoriser de nombreux entiers dans une plage donnée, car vous pouvez tester la divisibilité uniquement par les premiers du crible (pas par tous les entiers), ce qui divise le nombre de tests par environ ln(n) / 2.

Quelle est la différence entre le crible d'Ératosthène et le crible de Sundaram ?

Le crible de Sundaram (1934) génère les premiers impairs en éliminant les entiers de la forme i + j + 2ij (pour i, j ≥ 1) du tableau [1, n]. Il est moins connu car sa complexité est identique à Ératosthène — O(n log n) — sans avantage pratique. Le crible d'Atkin (2003) améliore la constante pour les très grandes valeurs de n, avec O(n / ln ln n) opérations, mais est plus complexe à implémenter correctement. Pour n ≤ 10⁷, la différence pratique est inférieure à 20 % et Ératosthène reste le choix standard.