ATLAS Ouvrir dans l'atlas →

ExerciceMaths expertes, chapitre 4 — Congruences · Exercices d'approfondissement

Exercice 23 Nombres de Poulet

Démonstration

Soit n∈ℕ∗n\in\mathbb{N}^{*} impair, tel que : 2n−1≢1  [n]2^{n-1}\not\equiv 1 \; [n].

1. Montrer que nn n'est pas premier.

2. Quel est le reste de la division de 23402^{340} par 341341 ?

Que cela signifie-t-il par rapport au petit théorème de Fermat ? Un nombre comme 341341 est appelé nombre de Poulet.

3. Parmi les nombres entiers inférieurs à 2525 milliards, 10919874051 091 987 405 sont premiers et seulement 2185321 853 sont des nombres de Poulet (donc non premier).

On prend un nombre nn au hasard parmi les entiers inférieurs à 2525 milliards et l’on décide de déclarer, après avoir calculé 2n−12^{n-1} modulo nn :

• Si 2n−1≢1  [n]2^{n-1}\not\equiv 1 \; [n] : « nn n'est pas premier »

• Si 2n−1≡1  [n]2^{n-1}\equiv 1 \; [n] : « nn est premier »

(a) Quelle est la probabilité d'énoncer un résultat faux ?

(b) Quelle est la probabilité que le nombre soit premier sachant qu’il a été annoncé comme tel ?

Corrigé

1. Raisonnons par contraposée. Supposons nn premier. Comme nn est impair, on a n≠2n\neq 2, donc nn ne divise pas 22. Le petit théorème de Fermat s'applique alors : 2 n−1≡1  [n]2^{\,n-1}\equiv 1\;[n] ce qui contredit l'hypothèse 2 n−1≢1  [n]2^{\,n-1}\not\equiv 1\;[n]. n n’est pas premier.\boxed{n \text{ n'est pas premier.}} C'est un test de non-primalité : il permet d'affirmer qu'un nombre est composé sans en connaître le moindre diviseur, ce qui est remarquable.

2. Remarquons que 210=1 024=3×341+1donc210≡1  [341]2^{10}=1\,024=3\times 341+1 \qquad\text{donc}\qquad 2^{10}\equiv 1\;[341] Comme 340=10×34340=10\times 34 : 2340=(210)34≡134=1  [341]⟹le reste est 1.2^{340}=\left(2^{10}\right)^{34}\equiv 1^{34}=1\;[341] \qquad\Longrightarrow\qquad \boxed{\text{le reste est } 1.}

Ce que cela signifie. Le nombre 341341 vérifie donc la conclusion du petit théorème de Fermat, 2 341−1≡1  [341]2^{\,341-1}\equiv 1\;[341]. Pourtant : 341=11×31341=11\times 31 n'est pas premier. Autrement dit, la réciproque du petit théorème de Fermat est fausse : la congruence 2 n−1≡1  [n]2^{\,n-1}\equiv 1\;[n] ne garantit pas la primalité de nn. Le test de la question 1 ne fonctionne que dans un sens.

3. (a) Examinons quand le verdict est erroné.

• Si nn est premier, alors 2 n−1≡1  [n]2^{\,n-1}\equiv 1\;[n] et l'on annonce « premier » : le verdict est correct.

• Si nn n'est pas premier, deux cas se présentent. Ou bien 2 n−1≢1  [n]2^{\,n-1}\not\equiv 1\;[n] et l'on annonce « pas premier » : correct. Ou bien 2 n−1≡1  [n]2^{\,n-1}\equiv 1\;[n], c'est-à-dire nn est un nombre de Poulet, et l'on annonce à tort « premier ».

Les seuls cas d'erreur sont donc les 21 85321\,853 nombres de Poulet, sur les 2525 milliards d'entiers considérés : P(erreur)=21 85325×109≈8,74×10−7P(\text{erreur})=\frac{21\,853}{25\times 10^{9}}\approx 8{,}74\times 10^{-7}

soit environ une chance sur 1,1 million.\boxed{\text{soit environ une chance sur } 1{,}1 \text{ million.}}

(b) On annonce « premier » lorsque 2 n−1≡1  [n]2^{\,n-1}\equiv 1\;[n], ce qui se produit pour les 1 091 987 4051\,091\,987\,405 nombres premiers et pour les 21 85321\,853 nombres de Poulet. En notant AA l'événement « nn est premier » et BB l'événement « nn est annoncé premier » : PB(A)=1 091 987 4051 091 987 405+21 853=1 091 987 4051 092 009 258P_{B}(A)=\frac{1\,091\,987\,405}{1\,091\,987\,405+21\,853} =\frac{1\,091\,987\,405}{1\,092\,009\,258}

PB(A)≈0,999 98\boxed{P_{B}(A)\approx 0{,}999\,98} Interprétation. Le test se trompe environ deux fois sur cent mille annonces de primalité. C'est cette fiabilité — combinée à sa rapidité, puisque le calcul de 2 n−12^{\,n-1} modulo nn est très rapide — qui rend ce type de test précieux en cryptographie, où l'on a besoin de fabriquer de très grands nombres premiers.

Dans l'édifice

Thèmes

congruences, division euclidienne, divisibilité, petit théorème de fermat, nombres premiers, pseudo-premiers

Notions

entiers modulo n (anneau des), division euclidienne, nombre premier

Ouvrir dans l'atlas interactif →