Nombres premiers C. de la Losa 11 avril 2013

publicité
Nombres premiers
C. de la Losa
11 avril 2013
Table des matières
I
Nombres premiers
I.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
I.2 Propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
I.3 Décomposition en facteurs premiers . . . . . . . . . . . . . . . . . . . . . . .
II Raréfaction des nombres premiers
III Test de primalité
III.1 Le petit théorème de Fermat
III.2 Les nombres de Carmichaël
III.3 Les nombres de Mersenne .
III.4 Le test de Lucas-Lehmer . .
1
2
3
4
6
.
.
.
.
6
7
7
9
10
.
.
.
.
11
11
12
14
14
V Pour aller plus loin
V.1 Accélération du calcul de an modulo n . . . . . . . . . . . . . . . . . . . . . .
V.2 Quelques propriétés des nombres de Carmichael . . . . . . . . . . . . . . . .
14
14
14
Index
14
.
.
.
.
.
.
.
.
.
.
.
.
IV Solution des exercices de la partie III
IV.1 Le petit théorème de Fermat . . .
IV.2 Les nombres de Carmichaël . . .
IV.3 Les nombres de Mersenne . . . .
IV.4 Le test de Lucas-Lehmer . . . . .
I
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Nombres premiers
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
I.1
Définition
Définition 1.
un nombre n ∈ IN, n > 1, dont les seuls diviseurs sont 1 et n est dit premier.
Sinon il est dit composé.
Par convention, on considère que 0 et 1 ne sont ni composés ni premiers. On note P
l’ensemble des nombres premiers.
Exemples : 2, 3, 5, 7 ∈ P , 10 < P .
467 ∈ P (c’est le 91e), 22091 ∈ P . Le plus grand nombre premier connu date de mai 2004.
La définition d’un nombre premier est simple. On peut s’attendre à être capable de reconnaître facilement si un nombre est premier ou non. Il n’en est rien si le nombre est très
grand (quelques centaines de chiffres). La méthode la plus simple consiste à essayer tous les
diviseurs entre 1 et n. Mais elle devient très rapidement fastidieuse et longue. Néanmoins
on peut améliorer cet algorithme (pour d’autres procédés de test voir par exemple le cours
d’algèbre de Michel Demazure aux éditions Cassini).
Au lieu de tester 2, 3, 4, . . . , n, on peut se contenter de 2 et des nombres impairs car si q | n
avec q pair alors 2 | n (puisque 2 | q et q | n ⇒ 2 | n). Comme 2 aura été testé il est inutile
d’essayer les autres diviseurs. On peut en fait garder les nombres premiers inférieurs à n.
Mais il faut les connaître. Par exemple, pour n = 100, on examine les divisions de n par
2, 3, 5, 7, 9, 11, 13, . . . , 97, 99.
Un autre √
perfectionnement possible est d’utiliser la remarque suivante : si n = ab avec a √
≤b
2
2
alors a ≤ n. En effet, de a ≤ b, on forme a ≤ ab (car b > 0). Donc a ≤ n soit alors a ≤ n.
Il suffit ainsi
√ d’essayer 2, 3, 5, 7, 9, . . . , N comme diviseurs pour n, où N est l’entier le plus
proche de n.
Par exemple, pour n = 15, on teste uniquement 2 et 3 (car 42 > 15). Pour n = 100, on cherche
un diviseur parmi 2, 3, 5, 7, 9. Ceci se programme aisément sur les calculatrices à l’aide des
instructions de boucle :
Pour les CASIO :
Pour les TI
”N”→N
√
FOR 7 → D to N step 2
If Frac(N/D)=0 : THEN D STOP
IFEND
NEXT
:Prompt N
√
:For(D,7, N ,2)
:If fPart(N/D)=0
:Then
:Disp D
:Stop
:End :End
Quelques principes : une calculatrice peut effectuer des calculs, des boucles (c’est à dire
des actions répétitives), afficher ou demander des nombres. Un programme est une suite de
telles instructions. Ces dernières s’écrivent dans un programme à l’aide des menus obtenus
en appuyant sur MATH ou Test ou PRGM pour les TI, et, OPTN ou PRGM pour les
Casio.
Exercice 1 : A partir de ce qui précéde, écrire un algorithme testant si un entier n est premier
ou non. Puis traduire cet algorithme en un programme Premier dans le langage Python.
2
1 111 111 111 111 111 111 est-il premier ?
Exercice 2 : Ecrire une fonction ListePremier(n) en Python renvoyant la liste des nombres
premiers entre 1 et n.
I.2
Propriétés
Proposition 2.
tout n ∈ IN \ {0; 1} est divisible par un nombre premier.
Preuve : on fait une démonstration par récurrence sur n. Pour, n ≥ 2, notons P (n) la propriété
« tout entier inférieur à n et supérieur à 2 est divisible par un nombre premier. »
P (2) est vraie car 2 | 2 et 2 est premier.
Montrons P (n) ⇒ P (n + 1). On suppose que tout entier m est divisible par un nombre
premier où 2 ≤ m ≤ n.
Soit m0 un entier entre 2 et n + 1. Si 2 ≤ m0 ≤ n alors on applique l’hypothèse de récurrence
et m0 est divisible par un nombre premier.
Il reste m0 = n+1. Si n+1 est premier c’est terminé : n+1 premier divise n+1. Sinon, n+1 est
composé : n + 1 = r × s avec r, s , 1 et 2 ≤ r, s ≤ n. Donc, d’après l’hypothèse de récurrence, r
est divisible par un nombre premier. Par conséquent, n+1 est divisible par ce même nombre
premier.
D’après le principe de récurrence P (n) est vraie pour tout entier n.
Autre preuve :
Si n est premier alors il n’y a rien à faire.
Supposons donc que n est composé : n = km où k, m ∈ IN \ {0; 1}.
Soit D(n) = {d ∈ IN \ d , 1, d , n, d | n} = ensemble des diviseurs stricts de n.
Alors D(n) ⊂ IN et D(n) , ∅ car k, m ∈ D(n). Ainsi il existe un plus petit élément dans D(n).
Notons le p.
p est premier car sinon il admettrait un diviseur q > 1 qui serait aussi un diviseur de n avec
q < p. Et p ne serait plus le plus petit diviseur de n.
Théorème 3.
P est infini.
Remarque : C’est la proposition XX du livre IX des éléments d’Euclide.
Preuve : On effectue à nouveau une preuve par l’absurde : on suppose que P est fini (P a
par exemple n éléments) . Notons p1 , p2 , . . . , pn la liste des nombres premiers. Il faut trouver
une contradiction. Formons le nombre
N = p1 × p2 × · · · × pn + 1.
3
Alors, d’après la proposition 2, N est divisible par l’un des pi : N = qpi , pi > 1. On a donc
qpi − p1 × p2 × · · · × pn = 1. Soit
pi (q − p1 × p2 × · · · × pi−1 × pi+1 × · · · × pn ) = 1.
Donc pi | 1. C’est impossible car les seuls diviseurs de 1 sont ±1 et pi > 1.
P est donc infini.
Autre preuve : (due à P. Erdös) Soit N un entier naturel fixé pour l’instant.
α
α
α
α
Tout entier n ≤ N s’écrit (pourquoi ?) sous la forme n = p1 1 p2 2 p3 3 . . . pr r m2 avec les αi ∈ {0; 1}.
pr est le r-ième nombre premier. On va montrer que r → +∞. Ainsi les nombres premiers
seront en nombre infini.
Pour cela nous dénombrerons de deux manières les entiers entre 1 et N .
Bien entendu, il y a N entiers entre 1 et N .
Utilisons ensuite l’écriture de n : on a 2r choix pour les αi (faire un arbre). Mais m =
r
√
√
√
n
n
≤
N
.
On
a
donc,
au
plus,
N choix pour m.
≤
α
α
p1 1 . . . p r r
√
Par suite, on a au plus 2r N choix pour les n. D’où :
√
N ≤ 2r N
√
N ≤ 2r
√
ln N
≤ r
ln 2
√
ln N
→ +∞. Donc par le théorème des gendarmes r → +∞. Il y a
Quand N → +∞ alors
ln 2
bien une infinité de nombres premiers.
I.3
Décomposition en facteurs premiers
La proposition 2 nous dit que tout entier naturel n est divisible par un nombre premier p :
n = pm. Mais on peut recommencer avec m : m = p0 m0 . Donc n = pp0 m0 . Sachant que m0 < m
le processus se terminera. D’où
Théorème 4.
tout entier n ∈ IN \ {0; 1} s’écrit de manière unique (à l’ordre près) sous la forme d’un
produit de nombres premiers.
Plus précisément,
α
α
α
α
n = p1 1 × p2 2 × p3 3 × · · · × pmm
où pour tout i = 1, . . . , m et j = 1, . . . , m, pi ∈ P , αi ∈ IN∗ , pi , pj pour i , j, m est le nombre
de nombres premiers distincts « dans » n.
C’est la décomposition en facteurs premiers.
Preuve : L’unicité étant admise, montrons l’existence de cette décomposition par récurrence
sur n. Notons P (n) l’hypothèse de récurrence suivante : « tout entier m tel que 2 ≤ m ≤ n
4
s’écrit comme un produit de nombres premiers ».
Pour n = 2, c’est vrai : 2 = 21 .
Montrons que P (n) est héréditaire c’est à dire que n + 1 est un produit de nombres premiers. D’après la proposition 2, n + 1 est divisible par un nombre premier p : n + 1 = p × q
avec 1 < p ≤ n + 1.
Si p = n + 1 (donc q = 1) alors n + 1 ∈ P et P (n + 1) est vraie.
Si 1 < p ≤ n alors 2 ≤ q ≤ n. Donc, d’après l’hypothèse de récurrence P (n), q est un produit
de nombres premiers. Par conséquent, n + 1 est le produit de p par un produit de nombres
premiers. Ce qu’il fallait démontrer.
Autre preuve (sans récurrence) : On note E l’ensemble des entiers ≥ 2 qui ne peuvent pas
s’écrire comme preduit de facteurs premiers. Montrons par l’absurde que E = ∅ : cela montrera l’existence d’une décomposition pour tout entier.
Supposons donc E , ∅. Comme E ⊂ IN alors il possède un plus petit élément. Notons le m.
m ∈ E n’est pas premier sinon il serait produit de facteurs premiers (d’un seul en fait : luimême) et ne serait pas dans E. Mais alors, d’après la proposition 2, m = pa avec p, a > 1 (m
est divisible par un nombre premier p). Donc p, a < E car p < m et a < m. p et a s’écrivent
alors comme produit de facteurs premiers donc m aussi. C’est impossible. E est donc vide.
L’unicité est admise.
Exemples : 28 = 22 × 7, 220 = 22 × 5 × 11.
1 111 111 = 239 × 4649.
Remarque : si 1 est un nombre premier alors la décomposition n’est plus unique puisque
l’on peut « mettre » 1 autant de fois que désiré dans la décomposition.
Cette décomposition se programme aisément sur la calculatrice :
• Données : A
• Résultats : une liste de nombres premiers constituant A
• Description : Calcule les facteurs premiers présents dans A et les stocke dans une liste.
• Programme : "DEC"
Pour les CASIO :
ClrList
Seq(0,K,1,100,1)→List1
"NB" ?→A
2→D :1→I :1→P
While A>1
If Frac(A÷D)=0 :Then D→
List1[I] :I+1 →I :A÷D→A
ELSE D+P→D :2→P
IfEnd
If D2 >A : Then A→D
IfEnd
WhileEnd
List1
Pour les TI
:ClrList L1
:Prompt A
:2→D :1→I :1→P
While A> 1
:If fPart(A/D)= 0
:Then
:D→L1 (I) :I+1 →I
:A/D→A
:Else
:D+P→D :2→P
:If D2 >A
:A→D
:End :End
:Disp L1
5
II
Raréfaction des nombres premiers
Il existe une infinité de nombres premiers mais il existe des suites d’entiers consécutifs de
longueur quelconque ne contenant aucun nombre premier. En voici la preuve.
Exercice 3 : (d’après Odyssée, TS, Hatier) n est un entier naturel et N le produit de tous les
nombres premiers inférieurs ou égaux à n.
1) Montrer que, pour tout k entre 2 et n (inclus) , il existe un nombre premier inférieur à n
qui divise k.
2) En déduire qu’aucun des nombres de la liste N + 2, N + 3, . . . , N + n n’est premier.
3) Combien de nombres contient cette liste ?
4) En déduire une méthode pour trouver 6 entiers consécutifs non premiers.
5) Donner un ordre de grandeur de N permettant de lister 50 entiers consécutifs non premiers.
Solution :
1) Tout entier est divisible par un nombre premier d’après le théorème 2. Donc k est divisible par un nombre premier p ≤ k. Mais k ≤ n. Donc p ≤ n (et p est premier).
2) Il faut montrer que N + k n’est pas premier pour tout k entre 2 et n. Il suffit de trouver
un diviseur de N + k. Mais, d’après la question précédent, k est divisible par un nombre
premier p ≤ n. De plus ce nombre p est un facteur de N (car N est le produit de tous les
nombres premiers ≤ n). Ainsi N + k est divisible par p. Ceci est vrai pour chaque entier k
entre 2 et n. Donc aucun des nombres N + 2, N + 3, . . . , N + n n’est premier.
3) Cette liste contient n − 2 + 1 = n − 1 nombres. Car, entre les entiers a et b, il y a b − a + 1
entiers (a et b inclus).
4) Pour avoir 6 entiers consécutifs non premiers, il suffit de choisir n = 7 d’après la question
précédente. On obtient ensuite N en effectuant le produit des nombres premiers ≤ 7.
Donc N = 2 × 3 × 5 × 7 = 210. Les 6 entiers consécutifs non premiers sont : 212–213–214–
215–216–217.
En effet : 212 = 22 × 53
213 = 2 × 71
214 = 2 × 107
215 = 5 × 43
216 = 23 × 33
217 = 7 × 31
Ceci nous donne une méthode fournissant à coup sûr des entiers consécutifs non premiers. Mais ce ne sont pas les plus petits... Par exemple, 90–91–92–93–94–95 ne sont pas
premiers.
5) Cette fois n = 51. Il faut donc faire le produit des nombres premiers ≤ 50. Il s’agit de 2 ;
3 ; 5 ; 7 ; 11 ; 13 ; 17 ; 19 ; 23 ; 29 ; 31 ; 37 ; 41 ; 43 ; 47.
Le produit vaut N = 614889782588491410. Il est de l’ordre de 1017 .
III
Test de primalité
6
III.1
Le petit théorème de Fermat
Exercice 4 : (d’après Math’x, TS, Didier) On s’intéresse aux reste des nombres an −a dans leur
division euclidienne par n, entier naturel supérieur ou égal à 2.
1) Calculer ces restes pour a = 5 et n = 2 ; a = 5 et n = 6 ; a = 5 et n = 8 ;
2) On a automatisé ce calcul sur un tableur et obtenu les résultats ci-dessous pour les entiers
a de 0 à 12 et les entiers n de 2 à 13.
Vérifier vos résultats de la question 1) avec ce tableau.
3) Certaines lignes sont constituées de 0, quelles conjectures pouvez-vous émettre ?
4) Reproduire et agrandir ce tableau sur votre tableur préféré. Votre conjecture s’en trouvet-elle renforcée ou infirmé ?
5) Le théorème suivant sera démontré lors du dernier chapitre d’arithmétique :
Si p est un nombre premier et a un entier naturel alors ap ≡ a (p).
Il s’agit du petit théorème de Fermat. Donner d’autres formulations de ce théorème.
6) Enoncer enfin la contraposée et la réciproque de ce théorème. La contraposée est-elle
vraie ?
La partie suivante aborde la réciproque.
III.2
Les nombres de Carmichaël
Exercice 5 : (d’après Math’x, TS, Didier) Les nombres pseudo-premiers de base 2.
Soit p = 341.
1) Justifier que 211 ≡ 2 (341).
2) En déduire que 2341 ≡ 2 (341).
7
3) Le réciproque du petit théorème de Fermat est-elle vraie ? Ce nombre p non premier tel
que 2p ≡ 2 (p) est appelé nombre pseudo premier de base 2 (car le nombre a = 2 vérifie le
petit théorème de Fermat avec n = p = 341 tout en n’étant pas premier).
4) Montrer que 561 est un nombre pseudo-premier de base 2 et de base 3.
Exercice 6 : (d’après Math’x, TS, Didier) On considère l’algorithme suivant :
Entrées :
m, n, r, t, a, k sont des entiers naturels
Initialisation :
n prend la valeur 561
t prend la valeur 0
Traitement :
Pour a allant de 2 à n − 1 :
r prend la valeur reste(a ; n)
m prend la valeur r
Pour k allant de 2 à n :
r prend la valeur reste(m × r ; n)
Si m , r alors :
Afficher n « n’est pas pseudo-premier de base » a
t prend la valeur 1
Si t = 0 alors :
Afficher « pseudo-premier »
où la fonction reste(a ; b) renvoie le reste de la division euclidienne de a par b. Par exemple,
reste(25, 3) renvoie 1.
1) Pour a = 3, expliquer ce que fait la partie de l’algorithme entourée en bleue.
2) A quelle condition la variable t contiendra-t-elle la valeur 1 à la fin de l’algorithme ?
3) Ecrire ce programme en Python et indiquer l’affichage obtenu. Que cela signifie-t-il pour
561 ?
4) Qu’en est-il de 341 ; 1105 ; 1500 ; 1729
5) Proposer une définition d’un nombre pseudo-premier (appelé aussi nombre de Carmichael).
Exercice 7 : On adopte le test de primalité suivant pour un entier p (dit test de primalité de
Fermat) :
On choisit au hasard un entier a tel que 2 ≤ a ≤ p − 1.
• si ap . a (p) alors on est sûr que p n’est pas premier.
• si ap ≡ a (p) alors p est probablement premier.
1) Ecrire ce programme en Python et le tester avec p = 12353 puis avec p = 101.
2) Par quels nombres ce test est-il mis en défaut ?
3) Comment améliorer la fiabilité de ce test ?
8
Exercice 8 : Proposer une modification du programme de l’exercice 6 pour qu’il affiche tous
les nombres pseudo-premiers entre 2 et 10000. En déduire la probabilité que la réciproque
du petit théorème de Fermat se trompe sur un entier inférieur ou égal à 10000.
Exercice 9 : preuve du fait que 561 est pseudo-premier : Exercice 13 page 77 de votre livre,
questions 2) a)b)c) uniquement.
III.3
Les nombres de Mersenne
Définition 5.
Les nombres de Mersenne sont les entiers de la forme 2n − 1 pour n entier naturel. On
les note Mn .
Mn = 2n − 1 où n ∈ IN.
Remarques :
• Marin Mersenne était un moine français (1588-1648 à Prais).
• Les plus grands nombres premiers connus sont du type Mn . Le record actuel date du
25 janvier 2013 avec un nombre premier de 17 425 170 chiffres (Cf. http://www.
mersenne.org/).
• Ces nombres ont beaucoup de propriétés et un test particulier existe pur ces nombres.
Exercice 10 : (d’après Math’x, TS, Didier)
1) Pour 0 ≤ n ≤ 20, écrire un algorithme testant si Mn est premier ou composé. Utiliser un
logiciel ou Python pour obtenir les résultats. Quelles conjectures pouvez-vous formuler ?
2) Vérifier que pour tout a réel et tout entier r non nul on a
ar − 1 = (a − 1) ar−1 + ar−2 + · · · + 1 .
En déduire que si n est composé alors Mn est aussi composé.
3) On suppose que Mn admet un diviseur premier d. Justifier que 2n ≡ 1 (d).
4) On considère un entier p premier tel que Mp admette un diviseur premier d. Soit A
l’ensemble des entier naturel n non nuls tels que 2n ≡ 1 (d).
a) Montrer que A admet un plus petit élément p0 et que p0 > 1.
b) Montrer que tout élément de A est multiple de p0 (vous pourrez écrire la division
euclidienne de n par p0 ). En déduire que p = p0 .
c) Prouver que d − 1 ∈ A puis en déduire qu’il existe un entier k tel que d = 2kp + 1.
5) Quel est le premier diviseur premier possible de M23 ? M23 = 8 388 607 est-il premier ?
Exercice 11 : (d’après Math’x, TS, Didier) Etude de M19 . Vous pourrez bien entendu utiliser
les résultats de l’exercice 10.
9
1) Expliquer pourquoi les diviseurs premiers de M19 sont de la forme d = 38k+1 avec k ∈ IN.
p
2) Combien y-a-t-il de diviseurs de la forme d = 38k + 1 avec d ≤ E( M19 ) ?
3) Démontrer que si k prend la forme 3m + 1 ou 5m + 3 ou 7m + 2 avec m ∈ IN, d n’est pas
premier.
4) Combien y-a-t-il finalement de cas à examiner ? M19 est-il premier ?
III.4
Le test de Lucas-Lehmer
Exercice 12 : (d’après Math’x, TS, Didier) On définit la suite (Sn ) par S0 = 4 et Sn+1 = Sn2 − 2
pour tout n ≥ 0.
1) Démontrer que : ∀n ∈ IN
2 | Sn .
2) Montrer que la suite (Sn ) est une suite strictement croissante d’entiers. Peut-elle converger ?
Exercice 13 : (d’après Math’x, TS, Didier) Soit p un nombre premier. Nous allons étudier les
restes Rn des Sn dans la division euclidienne par Mp . On rappelle que Mp = 2p − 1 est le
p-ième nombre de Mersenne.
1) Prouver que pour tout n ∈ IN on a Rn+1 ≡ R2n − 2 (Mp ).
2) Ecrire un algorithme calculant les restes Rn pour tous les nombres premiers p entre 3 et
20 et pour n de 0 à 30. Puis traduire cet algorithme en un programme en Python.
3) Pour un des nombres p considérés, aucun reste n’est nul. Quel est ce nombre p ? Le nombre Mp correspondant est-il premier ?
4) Pour tous les autres, quel lien peut-on conjecturer entre p et le rang r du reste nul ?
Vérifier que ces Mp sont premiers.
5) A quoi sont alors égaux les restes à partir du rang r + 2 ?
6) Démontrer que si pour un rang r, Sr est multiple de Mp , alors les restes de Sr dans la
division euclidienne par Mp sont égaux à 2 à partir du rang r + 2.
Exercice 14 : (d’après Math’x, TS, Didier) On admet que, pour p premier supérieur ou égal à
3, Sp−2 ≡ 0 (Mp ) implique Mp premier.
1) Compléter l’algorithme dessous :
Entrées :
Saisir p, un nombre premier ≥ 3
Initialisation :
S prend la valeur 4
M prend la valeur de 2p 1
Traitement :
10
Pour k allant de 1 jusqu’à p − 2 :
S prend la valeur du reste dans la division de S 2 − 2 par M.
Si S = 0 :
alors Afficher ....
Sinon :
Afficher ....
2) Ecrire cet algorithme en Python.
3) Utiliser ce programme pour déterminer si M107 , M607 ou M3217 sont premiers ou non.
IV
Solution des exercices de la partie III
IV.1
Le petit théorème de Fermat
Solution : exercice 4
1) Pour a = 5 et n = 2 : 52 − 5 ≡ 1 − 1 ≡ 0 (2).
Pour a = 5 et n = 6 : 56 − 5 ≡ (−1)6 − (−1) ≡ 1 + 1 ≡ 2 (6).
Pour a = 5 et n = 8 : 58 − 5 ≡ 254 − 5 ≡ 14 − 5 ≡ −4 ≡ 4 (8).
2) Cela concorde. A l’intersection de la colonne G et de la ligne 8, on lit bien 4.
3) Cela se produit pour n premier.
4) Oui !
5) On peut le réécrire en :
• Si p est un nombre premier alors pour tout entier naturel a on a ap ≡ a (p).
• Si p est un nombre premier et a un entier naturel non divisible par p alors ap−1 ≡ 1 (p)
(on montrera comme « simplifier » par a dans le dernier chapitre).
• Si p est un nombre premier alors pour tout entier naturel a non divisible par p on a
ap−1 ≡ 1 (p).
6) La contraposée du théorème du 5) est : si ap . a (p) alors p n’est pas premier ou a n’est
pas un entier naturel. Comme a est toujours un entier alors la contraposée se réduit à : Si
ap . a (p) alors p n’est pas premier.
La contraposée du premier point ci-dessus est :
S’il existe un entier a tel que ap . a (p) alors p n’est pas premier.
Pour rappel, la contraposée de A ⇒ B est non(B) ⇒ non(A). L’implication et la contraposée sont toutes les deux vraies (ou toutes les deux fausses). Ceci se démontre par l’absurde.
Comme le petit théorème de Fermat est vraie alors » ∃a ∈ IN ap . a (p) ⇒ p non premier »
est vraie.
Pour la réciproque « ∀a ∈ IN ap ≡ a (p) ⇒ p est premier », c’est une autre histoire. C’est
l’objet des exercices qui suivent.
11
IV.2
Les nombres de Carmichaël
Solution : exercice 5
1) 211 = 2048 = 341 × 6 + 2 car 2 0 4 8
2
3 4 1 . Donc 211 ≡ 2 (341).
6
2) On remarque 341 = 11 × 31 car 3 4 1 1 1 . Donc 2341 = 211×31 = (211 )31 ≡ 231 (341)
11 31
0
d’après le 1). Mais 231 = 211 ×211 ×29 ≡ 2×2×29 ≡ 211 ≡ 2 (341). Finalement 2341 ≡ 2 (341).
3) La réciproque est fausse car on vient de trouver un a = 2 et un p = 341 tel que ap ≡ a (p)
sans que p = 341 = 31 × 11 ne soit premier.
On rappelle que la réciproque est « ∀a ∈ IN ap ≡ a (p) ⇒ p est premier ».
4) Il suffit de montrer que 2561 ≡ 2 (561) et 3561 ≡ 3 (561). Cela signifiera que 561 = 3×11×17
met « doublement » la réciproque du petit théorème de Fermat en défaut.
Pour a = 2, 211 = 2048 ≡ 365 (561). Puis 222 ≡ 3652 ≡ 268 (561). On continue en élevant
encore au carré : 244 ≡ 2682 ≡ 16 = 24 (561). Ensuite 2444 = (244 )10 ×24 ≡ (24 )10 ×24 ≡ 244 ≡
24 (561). Enfin 2561 = 2444+44+44+22+7 = 2444 × 244 × 244 × 222 × 27 ≡ 24 × 24 × 24 × 268 × 27 ≡
268 × 219 ≡ 2 (561).
On pouvait aussi remarquer avec un « petit programme » que 241 ≡ 2 (561). Cela permettait de gagner du temps.
Pour a = 3, 39 ≡ 48 (561) donc 327 = (39 )3 ≡ 483 ≡ 75. Puis 381 = (327 )3 ≡ 753 ≡ 3 (561).
6
Mais 561 = 81 × 6 + 75 donc 3561 = 381×6+75 = 381 × 375 ≡ 36 × 375 ≡ 381 ≡ 3 (561).
Solution : exercice 6
1) Dans un permier temps, r prend la valeur de a modulo n. On fait de même pour tous les
rk pour k allant de 2 à n. On arrive donc à rn modulo n. C’est le résultat obtenu par la
dernière boucle : r prend la valeur de 3561 ≡ (561) .
2) On t = 1 quand, pour un certain a dans la boucle principale, n n’est pas pseudo-premier
de base a c’est à dire an . a (n). D’après la contraposée du petit théorème de Fermat, cela
prouve que n n’est pas premier.
3) On peut traduire cet algorithme ainsi
1
2
3
4
5
6
7
8
9
10
11
12
13
n = 561
t = 0
f o r a in range ( 2 , n ) :
r = a%n
m = r
f o r k in range ( 2 , n+1) :
r = (m* r )%n
i f m != r :
p r i n t n , " n ’ e s t pas pseudo−premier de base " , a
# p r i n t n , " n ’ e s t pas premier . "
t =1
12
14
15
16
# break
i f t == 0 :
p r i n t n , " e s t pseudo−premier "
Le programme renvoie « 561 est pseudo-premier »
4)
• 341 n’est pas premier car il n’est pas pseudo-premier de base 3.
• 1105 est pseudo-premier.
• 1500 n’est pas pseudo-premier de base 2.
• 1729 est pseudo-permier.
5) C’est un nombre composé pseudo-premier de base quelconque. C’est à dire que c’est un
nombre non premier vérifiant la conclusion du petit théorème de Fermat. Cela signifie
en particulier que si, pour un entier p, on a
ap ≡ a (p)
∀a ∈ IN
alors p n’est pas forcément un nombre premier.
Solution : exercice 7
1)
2)
3) Il suffit de choisir plusieurs nombres a distincts et de faire le test avec chacun d’eux.
On peut choisir, comme le programme PGP (Pretty Good Privacy) servant à coder les
messages sur internet, a = 2 ; 3 ; 5 ; 7. La probabilité d’avoir un nombre composé si
toutes les congruences donnent a s’en trouve réduite. Le test devient donc :
Pour a dans la liste {2 ; 3 ; 5 ; 7}, calculer ap modulo p.
• si ap . a (p) pour l’un des a alors on est sûr que p n’est pas premier.
• si ap ≡ a (p) pour chaque valeur de a alors p est probablement premier.
Solution : exercice 8
Il suffit de faire une boucle sur les nombres composés entre 2 et 10000 pour obtenir les
nombres pseudo-premiers. On en dénombre 7 à savoir 561–1105–1729–2465–2821–6601–
8911.
La réciproque du petit théorème de Fermat se trompe uniquement sur les 7 nombres ci7
dessus. Donc la probabilité vaut
.
10000
Solution : exercice 9
a) p = 3, q = 11 et r = 17. De plus 2 ; 10 ; 16 divisent 560.
b) Soit a un nombre entier premier avec n , alors les nombres premiers 3 ; 11 et 17 ne divisent pas n. On applique le petit théorème de Fermat : a2 ≡ 1 (3) (∗) ; a10 ≡ 1 (11) et
a16 ≡ 1 (17).
Comme n − 1 = 560 est divisible par 2, en élevant à la bonne puissance (∗), on obtient a560 ≡ 1 (3). De même (toujours d’après le a)) pour les deux autres congruences :
a560 ≡ 1 (11) et a560 ≡ 1 (17).
13
c) D’après le question précédente on a an−1 − 1 = kp = k0 q = k00 r pour certains k, k0 , k00 entiers.
Donc q | kp. Par suite q | k car p et q sont des nombres premiers. Donc k = mq puis an−1 −1 =
kp = mqp. On monter de la même manière que r | m d’où an−1 − 1 = mqp = m0 rqp = m0 n
pour un certain m0 . Ainsi an−1 − 1 ≡ 0 (n). Par conséquent n est pseudo-premier.
IV.3
Les nombres de Mersenne
Solution : exercice 10
1)
2)
3)
IV.4
Le test de Lucas-Lehmer
V
Pour aller plus loin
V.1
Accélération du calcul de an modulo n
V.2
Quelques propriétés des nombres de Carmichael
14
Téléchargement