Vous êtes sur la page 1sur 112

Algèbre Effective

François DE M ARÇAY
Département de Mathématiques d’Orsay
Université Paris-Saclay, France
2
3

Table des matières

I. Algorithme d’Euclide. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1. Division euclidienne : École élémentaire . . . . . . . . . . . . . . . . . . . . . . 5
2. Division euclidienne : polynômes à coefficients entiers . . . . . . . 6
3. Division euclidienne : polynômes à coefficients dans un an- 7
neau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. Anneaux intègres euclidiens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5. Croissance des expressions intermédiaires et normalisations 13
6. Algorithme d’Euclide étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
II. Anneaux Z/nZ, tests de primalité . . . . . . . . . . . . . . . . . . . . . . . 22
1. Complément culturel sur la division euclidienne . . . . . . . . . . . . . 22
2. Théorème des restes chinois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3. Division euclidienne dans les anneaux quotients . . . . . . . . . . . . . 28
4. Exponentiation rapide par répétition de carrés . . . . . . . . . . . . . . . 29
 
5. Anneaux Z nZ, + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
 ×  
6. Groupe Z nZ des éléments inversibles de Z nZ, + . . . . . . 41
7. Nombres pseudo-premiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
8. Nombres de Carmichael . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
9. Test de primalité de Miller-Rabin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
III. Initiation à Sage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
1. Accéder à Sage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
2. Sage comme calculatrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3. Aide en ligne et Complétion automatique . . . . . . . . . . . . . . . . . . . . . 69
IV. Programmation avec Sage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
1. Syntaxe générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
V. Grands nombres premiers, cryptographie, RSA . . . . . . . . . 93
1. Limitations physiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
2. Grands nombres premiers : pêche à la ligne . . . . . . . . . . . . . . . . . . . 96
3. Principe de la crytographie RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4. Codages préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4

5. RSA : historique et réflexions diverses . . . . . . . . . . . . . . . . . . . . . . . . . 110


1. Division euclidienne : École élémentaire 5

Algorithme d’Euclide

François DE M ARÇAY
Département de Mathématiques d’Orsay
Université Paris-Sud, France

1. Division euclidienne : École élémentaire


Soit Z l’anneau des nombres entiers naturels positifs ou négatifs, et soit N =
Z+ ⊂ Z le sous-ensemble des entiers qui sont positifs.
Définition 1.1. Diviser avec reste un entier a > 1 par un entier 1 6 b 6 a qui lui
est inférieur, cela consiste à trouver un quotient entier q > 0 et un reste entier
r > 0 tels que :
a = q b + r,
le quotient q étant maximal possible, de telle sorte que dans le reste r, on ne
puisse plus extraire « du b » :
0 6 r 6 b − 1.
Il est bien connu que diviser avec reste est toujours possible, le couple (q, r) ∈
N × N étant alors déterminé de manière unique en partant de a > 1 et de b avec
1 6 b 6 a quelconques.
Exemple 1.2. Comme à l’école élémentaire, soit à diviser a = 126 par b = 35 :
126 35
− 105 3
21
Mentalement, on essaie de multiplier 35 successivement par 1, 2, 3, 4, et on trouve
que 3 × 35 = 105 est le résultat maximum qui demeure inférieur à 126. On reporte
alors − 105 à gauche, on soustrait 126 − 105 = 21, et on trouve :

|{z} 3 · |{z}
126 = |{z} 35 + |{z}
21 .
a q b r

Cet exemple s’inscrit dans un contexte général, connu depuis la Préhistoire


sur Terre, sur Mars, sur Jupiter, sur Vénus, et sans doute aussi sur quelques exo-
planètes dotées de mathématiques encore embryonnaires.
6 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Théorème 1.3. [Division euclidienne des entiers] Étant donné deux nombres en-
tiers positifs quelconques a ∈ N∗ et b ∈ N∗ avec 1 6 b 6 a, il existe toujours un entier
positif unique q ∈ N∗ et un entier positif unique r ∈ N — parfois égal à 0 — tels
que :
a = qb+r et 06r<b 
Exercice 1. En s’inspirant de la figure située à droite du portrait d’Euclide, expliquer en quoi la
division possède un sens géométrique.

2. Division euclidienne : polynômes à coefficients entiers


La division euclidienne fonctionne de manière essentiellement analogue dans
l’anneau Z[x] des polynômes à une indéterminée x et à coefficients entiers, sa-
chant que plusieurs opérations de soustraction successives s’avèrent nécessaires.
Exemple 2.1. Soit le polynôme quartique :
A(x) := 3 x4 + 2 x3 + x + 5,
à diviser avec reste par le polynôme quadratique (donc de degré inférieur) :
B(x) := x2 + 2 x + 3,
les deux monômes de tête de A et de B étant placés en première position. On se
convainc mentalement que c’est la multiplication par le monôme 3 x2 qui permet
de faire monter le monôme de tête de B(x) à ce nouveau niveau de celui de A(x) :
3 x4 = 3 x2 · x2 ,
et donc, on est conduit à soustraire :
A(x) − 3 x2 B(x) ,
| {z }
−3x4 −6x3 −9x2

procédé que l’on peut aussi représenter agréablement sous forme d’un tableau
incomplet qui commence à se remplir :
3. Division euclidienne : polynômes à coefficients dans un anneau 7

3 x4 + 2 x3 + 0 + x + 5 x2 + 2 x + 3
− 3 x4 − 6 x3 − 9 x2 3 x2
− 4 x3 − 9 x2 + x + 5
De cette manière, on fait apparaître le reste intermédiaire :
− 4 x3 − 9 x2 + x + 5,
qui possède un nouveau monôme de tête − 4 x3 , de telle sorte que c’est mainte-
nant le monôme multiplicateur :
−4x
qui permet de faire remonter le monôme de tête x2 de B(x) au niveau − 4 x3 .
Après itération et épuisement de ces calculs, le tableau final s’écrit :
3 x4 + 2 x3 + 0 + x + 5 x2 + 2 x + 3
− 3 x4 − 6 x3 − 9 x2 3 x2
− 4 x3 − 9 x2 + x + 5
4 x3 + 8 x2 + 12 x −4x
− x2 + 13 x + 5
x2 + 2 x + 3 −1
15 x + 8
3 x2 − 4 x − 1

Ce tableau synoptique permet alors de lire instantanément le quotient et le


reste dans la division du polynôme A(x) par le polynôme B(x) :
A(x) = Q(x) ·B(x) + R(x),
| {z } | {z }
quotient reste

équation qui s’écrit donc explicitement :


3 x4 + 2 x3 + x + 5 = 3 x2 − 4 x − 1 · x2 + 3 x + 3 + 15 x + 8.
 

Bien entendu, ce deuxième exemple simple suggère aussi un procédé général,


probablement déjà connu du lecteur-étudiant.

3. Division euclidienne : polynômes à coefficients dans un anneau


Afin d’embrasser la division euclidienne dans un cadre algébrique adapté,
nous travaillerons maintenant avec un anneau commutatif :
A , +, × ,


possédant un élément unité 1 ∈ A pour la multiplication :


1·r =r·1=r (∀ r ∈ A ),

la multiplication étant souvent notée « · » à la place de « × », voire même sous-


entendue en omettant tout symbole.
8 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Définition 3.1. Un élément u ∈ A est appelé une unité s’il existe u0 ∈ A tel que :
u u0 = u0 u = 1,
et le groupe (multiplicatif, commutatif) des unités de A est alors noté A × .
Soit maintenant x un symbole qui désigne une indéterminée. L’espace vecto-
riel des polynômes à coefficients dans A :
n o
A [x] := an x + an1 x
n n−1
+ · · · + a1 x + a0 : n ∈ N, an , an−1 , . . . , a1 , a0 ∈ A ,
est à nouveau un anneau commutatif possédant la même unité 1 ∈ A (exercice
de révision mentale).
Supposons temporairement pour simplifier que les polynômes :
B(x) = bm xm + bm−1 xm−1 + · · · + b0 (m > 0),

par lesquels on cherche à diviser d’autres polynômes :


A(x) = an xn + an−1 xn−1 + · · · + a0 (n > 0), ,

de degré supérieur n > m ont toujours un coefficient de tête bm ∈ A × qui est


une unité.
Définition 3.2. Étant donné un polynôme de degré k > 0 :
P (x) = ck xk + ck−1 xk−1 + · · · + c0 (ck 6= 0),

on appelle monôme de tête de P son terme de plus haut degré et on le note :


Tete P (x) = ck xk .


Algorithme: Division polynomiale avec reste


• Entrées : Deux polynômes
X X
A(x) = ai x i et B(x) = bj x j
06i6n 06j6m

à coefficients ai ∈ A et bj ∈ A de degrés respectifs n > m > 1 tels que le


coefficient bm ∈ A × du monôme de tête bm xm de B(x) est une unité de l’anneau
A.
• Sorties : Un polynôme-quotient Q ∈ A [x] et un polynôme-reste R ∈ A [x] satis-
faisant :
A = Q B + R,
le degré de R étant strictement inférieur à celui de B :
0 6 deg R < m.

• Algorithme :
 R ←−[ A.
 pour i = n − m, n − m − 1, . . ., 0, faire : 
si deg R = m + i alors Qi ←−[ Tete (R) bm
R ←−[ R − Qi B
sinon Qi ←−[ 0
4. Anneaux intègres euclidiens 9
P
 Retourner Q = 06i6n−m Qi et R.

Ici, le lecteur-étudiant est invité à déchiffrer soigneusement les instructions de


cet algorithme, afin premièrement de se convaincre par la réflexion qu’il corres-
pond bien à la situation générale exemplifiée ci-dessus, et deuxièmement, afin
de reconstituer par lui-même les arguments qui démontrent le caractère bien-
fondé des calculs, et notamment, de vérifier que l’algorithme termine en temps
fini.
Contentons-nous de détailler la démonstration d’un lemme plus simple.
Lemme 3.3. [Unicité du quotient et du reste] Lorsque le coefficient bm ∈
mathcalA× du monôme de tête bm xm de B(x) est une unité, le polynôme-quotient
Q(x) et le polynôme-reste R(x) dans la division de A(x) par B(x) :
A = Q B + R,
sont déterminés de manière unique.
Démonstration. En effet, une autre équation :
A = Q0 B + R0 ,
soustraite à A = Q B + R donne après réorganisation :
Q0 − Q B = R − R 0 ,


et comme le membre de droite est de degré 6 degB − 1, le membre de gauche ne


peut qu’être identiquement nul, d’où Q0 = Q puis R0 = R. 
4. Anneaux intègres euclidiens
Pourrait-on, par une conceptualisation adéquate, capturer dans un seul filet
les deux situations analogues classiques que sont :
• la division euclidienne dans N ou dans Z ;
• la division euclidienne dans Z[x] ou dans Q[x] ?
Dans les deux cas, ce qui compte, c’est l’existence d’une fonction naturelle
qui mesure l’abaissement de la complexité ou de la taille des objets après une
division élémentaire.
Définition 4.1. [Anneaux euclidiens] Un anneau commutatif intègre A muni
d’une unité 1 ∈ A est appelé un anneau euclidien s’il existe une fonction :
δ: A \{0} −→ N, δ(0) := −∞,
telle que, pour tous a, b ∈ A avec b 6= 0, il est possible de diviser a par b avec un
reste δ-inférieur au sens précis où :
il existe q, r ∈ A avec δ(r) < δ(b) satisfaisant a = q b + r .
Bien que l’unicité de q et celle de r ne soient pas requises dans cette définition,
on dit souvent que q est le quotient dans la division de a par b, et que r en est le
reste.
Noter que la fonction δ est soumise à la seule condition de diriger les
« abaissements de complexité » δ(r) < δ(b).
10 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Terminologie 4.2. On dira que δ est la fonction euclidienne de l’anneau euclidien


(A , δ).

Avec la fonction valeur absolue δ(a) := |a|, il est bien connu que l’anneau des
entiers naturels Z est un anneau euclidien, et d’ailleurs, l’unicité du quotient q et
du reste r sont garanties dès lors qu’on demande que r > 0, ce qu’il est raison-
nable de faire.
Lorsque A = K[x] est l’anneau des polynômes sur un corps, la fonction degré
d(a) := deg a, avec deg(0) := −∞, est la fonction naturelle qui munit K[x] d’une
structure d’anneau euclidien, l’unicité du quotient et du reste étant faciles à vé-
rifier.
Rappelons qu’un élément p ∈ A divise un autre élément q ∈ A s’il existe
r ∈ A satisfaisant :
p = r q.
Définition 4.3. [Plus grand commun diviseur] Soit A un anneau commutatif
quelconque et soient deux éléments a, b ∈ A . On dit qu’un élément c ∈ A est un
plus grand commun diviseur entre a et b, ce qu’on note c = pgcd(a, b), lorsque :
• c divise a et c divise b ;
• si un élément d ∈ A divise simultanément a et b, alors en fait, d divise c
Classiquement, le fait qu’un élément p ∈ A divise un autre élément q ∈ A se
note :
p | q.
Définition 4.4. [Plus petit commun multiple] Soit A un anneau quelconque et
soient deux éléments a, b ∈ A . On dit qu’un élément e ∈ A est un plus petit
commun multiple entre a et b, ce qu’on note e = ppcm(a, b), lorsque :
• a | e et b | e ;
• si un élément f ∈ A est divisible simultanément par a et par b, alors en fait,
e | f.
Certes en général, pgcd et ppcm ne sont pas, strictement parlant, uniques. Tou-
tefois, il est aisé, sur A = Z et sur A = Z[x] d’assurer leur unicité (voir infra).
Comme on le sait, entre deux nombres quelconques a, b ∈ Z, le pgcd est unique
dès lors qu’on demande qu’il appartienne à N. Alors le lecteur-étudiant reconsti-
tuera sans difficulté la démonstration des propriétés élémentaires du pgcd.
Lemme 4.5. Sur l’anneau Z des entiers naturels, la fonction à deux arguments
pgcd(·, ·) possède les cinq propriétés suivantes :
(i) pgcd(a, b) = |a| ⇐⇒ a | b ;
(ii) pgcd(a, b) = pgcd(b, a) ;
 
(iii) pgcd a, pgcd(b, c) = pgcd pgcd(a, b), c .
(iv) pgcd(c · a, c · b) = |c| pgcd(a, b).
(v) |a| = |b| =⇒ pgcd(a, c) = pgcd(b, c). 
4. Anneaux intègres euclidiens 11

Notons « pour le fun » que l’associativité générale s’écrit :



pgcd(a1 , . . . , an ) = pgcd a1 , pgcd(a2 , . . . , pgcd(an−1 , an ) . . . ) .
Les anneaux euclidiens sont exactement ceux dans lesquels des divisions eu-
clidiennes successives sont possibles, notamment pour trouver un pgcd entre
deux éléments quelconques donnés.

En partant de deux éléments a, b ∈ A que l’on renomme r0 , r1 ∈ A avec


δ(r0 ) > δ(r1 ), une première division euclidienne :
r0 = q1 r1 + r2 ,
suivie de divisions successives entre les restes nouveaux r2 , r3 , r4 , . . . qui ap-
paissent, peut être représentée synoptiquement comme suit :
δ(r0 ) > δ(r1 )
r0 = q1 r1 + r2
δ(r1 ) > δ(r2 )
r1 = q2 r2 + r3
δ(r2 ) > δ(r3 )
r2 = q3 r3 + r4
δ(r3 ) > δ(r4 )
r3 = q4 r4 + 0
où l’on suppose ici que le procédé termine à la quatrième division, à savoir que
r5 = 0. Lorsque A = Z, il est bien connu alors que le pgcd est le dernier reste non
nul, ici r4 , et on démontre en cours d’Algèbre que cela est encore vrai dans tout
anneau euclidien (A , δ).

Algorithme: Division euclidienne classique


• Entrées : Deux éléments a, b ∈ (A , δ) d’un anneau commutatif intègre euclidien
A muni d’une fonction euclidienne δ.
• Sortie : Un plus grand commun diviseur h ∈ A entre a et b.
 r0 ←−[ a, r1 ←−[ b.
 i ←−[ 1

 tant que ri 6= 0 faire ri+1 ←−[ Reste ri−1 divisé par ri
i ←−[ i + 1
 Retourner ri−1 .
12 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Comme cela a déjà été illustré sur l’exemple qui le précède, cet algorithme
(antique) divise les restes successifs :
δ(ri−1 ) > δ(ri )
ri−1 = qi ri + ri+1 ,

remplace à chaque étape les couples :

[ri , ri+1 ] ←−[ [ri−1 , ri ],

puis recommence à diviser :


δ(ri ) > δ(ri+1 )
ri = qi+1 ri+1 + ri+2 ,

et ainsi de suite.

Sans utiliser d’indices, l’algorithme de division euclidienne classique peut


aussi être représenté sous la forme d’une carte d’instructions en boucle :

Exemple 4.6. Il est avisé de représenter synoptiquement la recherche, déjà enta-


mée supra, du pgcd entre 126 et 35 :
126 > 35
126 = 3 · 35 + 21
35 > 21
35 = 1 · 21 + 14
21 > 14
21 = 1 · 14 + 7
14 > 7
14 = 2 · 7 + 0,

et ici, puisque le cinquième reste r5 = 0 est nul, l’avant-dernier reste r4 = 7 est un


(le) pgcd recherché.

Exemple 4.7. De manière alternative, on peut représenter sous forme d’un ta-
bleau le calcul qui montre que 315 et 307 sont premiers entre eux.
5. Croissance des expressions intermédiaires et normalisations 13

5. Croissance des expressions intermédiaires et normalisations


Les calculs avec des polynômes, des fractions rationnelles, ou des matrices à
coefficients entiers souffrent souvent d’une « maladie » propre au calcul numé-
rique ou symbolique : la croissance parfois débridée des expressions.
Exemple 5.1. Voici le déroulement du calcul du plus grand commun diviseur
entre les deux polynômes à coefficients entiers :
A = 7 x5 − 22 x4 + 55 x3 + 94 x2 − 87 x + 56
=: R0 ,
B = 62 x4 − 97 x3 + 73 x2 + 4 x + 83
=: R1 ,
au moyen de l’algorithme d’Euclide ; à cause notamment du fait que les deux
coefficients de tête 7 et 62 de A et de B ne sont pas des unités, les polynômes-
restes dans les divisions successives :
R2 := reste dans la division de R0 par R1 ,
R3 := reste dans la division de R1 par R2 ,
R4 := reste dans la division de R2 par R3 ,
R5 := reste dans la division de R3 par R4 ,
possèdent des coefficients rationnels qui « explosent » de manière assez surpre-
nante :
113293 3 409605 2 183855 272119
R2 = x + x − x+ ,
3844 3844 1922 3844
18423282923092 2 15239170790368 10966361258256
R3 = x − x+ ,
12835303849 12835303849 12835303849
216132274653792395448637 631179956389122192280133
R4 = − x− ,
44148979404824831944178 88297958809649663888356
20556791167692068695002336923491296504125
R5 = .
3639427682941980248860941972667354081
Afin de remédier — au moins en partie — à ce phénomène, il est avisé de nor-
maliser systématiquement les polynômes intermédiaires de manière à ce que le
coefficient de leur terme de tête soit toujours égal à 1.
Terminologie 5.2. Étant donné un polynôme de degré k > 0 :
P (x) = ck xk + ck−1 xk−1 + · · · + +c0 (ck 6= 0),
14 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

on appelle coefficient de tête le nombre :


ck ∈ A ,
et on dit que P unitaire lorsque :
ck = 1.
Par exemple, dans l’anneau A = Q[x] des polynômes à coefficients dans le
corps des nombres rationnels, on peut toujours diviser P (x) par son coefficient
de tête de manière à le rendre unitaire :
1 ck−1 k−1 c0
P (x) = xk + x + ··· + .
ck ck ck
Une expérience renouvelée des calculs à la main ou sur ordinateur a montré que
dans l’algorithme d’Euclide, il est avisé de rendre unitaires tous les restes intermé-
diaires afin de rabaisser la complexité des coefficients rationnels des polynômes.
Au final, après exécution de toutes les divisions euclidiennes requises, le poly-
nôme pgcd entre deux polynômes donnés A, B ∈ Q[x] :
pgcd(A, B) ∈ Q[x],
sera connu à un facteur rationnel non nul près.
Bien entendu, ce qui est vrai ici pour Q[x] est vrai aussi pour tout anneau de
polynômes K[x] à coefficients dans un corps commutatif K.
Mais comment s’y prendre si l’on désire travailler, plus généralement, avec
l’anneau des polynômes à coefficients dans un anneau euclidien A qui n’est pas
forcément un corps ?
Il suffit — certes un peu artificiellement — de demander l’existence de
formes normales au sens précis qui suit.
Définition 5.3. Un anneau euclidien est dit normal si tout élément a ∈ A pos-
sède une forme normale unique :
Normal(a) ∈ A
qui diffère de a simplement par une unité :
a = u · Normal(a) (u ∈ A × ),

la forme normale d’un produit quelconque entre deux éléments a, b ∈ A étant


égale au produit des formes normales :
Normal(a b) = Normal(a) Normal(b),
deux éléments a ∈ A et a0 ∈ A ayant la même forme normale :
Normal(a) = Normal(a0 )
lorsque, et seulement lorsque, ils diffèrent d’une unité :
a0 = u a (u ∈ A × ).

Il est avisé d’introduire une notation pour l’unité dont un élément a ∈ A et sa


forme normale diffèrent :
a
Unite(a) := .
Normal(a)
6. Algorithme d’Euclide étendu 15

Dans un anneau euclidien normal, pgcd et ppcm entre deux éléments quel-
conques sont alors définis de manière unique, simplement en prenant les formes
normales.
Exercice 2. Justifer l’affirmation qui précède.
Exercice 3. (a) Sur A = Z, déterminer la forme normale naturelle d’un entier.
(b) Faire de même sur A = K[x], où K est un corps.
(c) En utilisant la normalisation de (a), traiter l’algorithme d’Euclide qui permet de calculer le
pgcd entre deux entiers relatifs quelconques a, b ∈ Z.

6. Algorithme d’Euclide étendu


Soit (A , δ) un anneau commutatif unitaire euclidien normal. L’idée pour raffi-
ner l’algorithme d’Euclide, simple et déjà comprise plus haut, consiste, lorsqu’on
divise itérativement, à normaliser les restes à chaque étape. En tout cas, sans rem-
placer les restes intermédiaires par leurs formes normales, en partant de deux
éléments a, b ∈ A avec δ(b) 6 δ(a) que l’on renomme :
r0 := a et r1 := b,
rappelons que l’algorithme de divisions successives jusqu’à épuisement se repré-
sente comme suit :
r0 = q1 r1 + r2 ,
r1 = q2 r2 + r3 ,
... ... ...

ri−1 = qi ri + ri+1 ,
... ... ...

r`−2 = q`−1 r`−1 + r` ,


r`−1 = q` r` + 0,
le dernier reste non nul valant :
r` = pgcd(r0 , r1 ) = pgcd(a, b).
Maintenant, si l’on souhaite faire voir que les restes intermédiaires doivent
être normalisés, on les représentera sous la forme :

ρi ri avec ρi = Unite ρi ri ,
ri = Normal(ρi ri ),
et en supposant pour simplifier que l’on a déjà normalisé au départ :
r0 := Normal(a), ρ0 := Unite(a), a = ρ0 r0 ,
r1 := Normal(b), ρ1 := Unite(b), b = ρ1 r1 ,
de telle sorte les nouveaux restes intermédiaires avec spécification de normalisa-
tion s’écriront :
ρ2 r2 , ρ3 r3 , . . . . . . , ρ` r` ,
16 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

on obtiendra la représentation synoptique :


r0 = q1 r1 + ρ2 r2 ,
r1 = q2 r2 + ρ3 r3 ,
.. .. ..
. . .
ri−1 = qi ri + ρi+1 ri+1 ,
.. .. ..
. . .
r`−2 = q`−1 r`−1 + ρ` r` ,
r`−1 = q` r` + 0.
De plus, il s’avère dans certaines applications arithmétiques du calcul de pgcd
que tous les résultats intermédiaires possèdent une utilité. Si donc l’on part de
deux éléments quelconques a, b ∈ A d’un anneau euclidien normal A , une
organisation systématique (voir ce qui va suivre) des calculs donnera au final
l’identité de Bézout :
s` a + t` b = pgcd(a, b),
mais à chaque étape intermédiaire, on devra aussi écrire :
si a + ti b = ri (0 6 i 6 `). (∗)
En fait, il est aisé d’expliquer comment construire par récurrence de tels élé-
ments si , ti . Pour i = 0 et pour i = 1, on a tout d’abord :
1
· a + 0 · b = r0 =: s0 a + t0 b,
ρ0
1
0·a+ · b = r1 =: s1 a + t1 b,
ρ1
ce qui donne sans difficulté des couples (s0 , t0 ) et (s1 , t1 ) qui conviennent.
En raisonnant par récurrence, supposons pour un certain entier i avec 1 6 i 6
` − 1, on ait déjà obtenu aux deux niveaux i et i − 1 :
si−1 a + ti−1 b = ri−1 ,
si a + ti b = ri .
Alors en partant de l’identité de division euclidienne dans laquelle naît le (i + 1)-
ème reste (normalisé) :
ri−1 = qi ri + ρi+1 ri+1 ,
en réécrivant cette identité et en y insérant les deux identités admises par récur-
rence :
ρi+1 ri+1 = ri−1 − qi ri

= si−1 a + ti−1 b − qi si a + ti b
 
= si−1 − qi si a + ti−1 − qi ti b,
d’où après division par l’unité ρi+1 :
   
si−1 − qi si ti−1 − qi ti
ri+1 = a+ b
ρi+1 ρi+1
=: si+1 a + ti+1 b,
6. Algorithme d’Euclide étendu 17

ce qui donne les relations de récurrence :


si−1 − qi si ti−1 − ti si
si+1 := et ti+1 := .
ρi+1 ρi+1

Nous pouvons maintenant formuler l’énoncé des instructions avant de dé-


montrer qu’elles sont correctes.
Algorithme: Division euclidienne étendue avec mémorisations
• Entrées : Deux éléments a, b ∈ A d’un anneau euclidien normal.
• Sorties : Un entier d’arrêt ` ∈ N, une collection d’éléments ρi , ri , si , ti ∈ A pour
0 6 i 6 ` + 1, et des quotients qi ∈ A pour 0 6 i 6 `, calculés comme suit.
• Algorithme :
 ρ0 ←−[ Unite(a), r0 ←−[ Normal(a), s0 ←−[ 1/ρ0 , t0 ←−[ 0.
 ρ1 ←−[ Unite(b), r1 ←−[ Normal(b), s1 ←−[ 0, t1 ←−[ 1/ρ1 .
 i ←−[ 1
tant que ri 6= 0 faire 
qi ←−[ quotient ri−1 divisé par ri 
ρi+1 ←−[ Unite Reste(ri−1 divisé par ri ) 
ri+1 ←−[ Normal Reste(r i−1 divisé par ri )
si+1 ←−[ si−1 − qi s
i ρi+1
ti+1 ←−[ ti−1 − qi ti ρi+1
i ←−[ i + 1
 ` ←−[ i − 1
 Retourner `, ρi , ri , si , ti pour 0 6 i 6 ` + 1, et qi pour 1 6 i 6 `

Démonstration. On commence donc par normaliser a et b en introduisant :


a
r0 := = Normal(a) = Normal(r0 ),
ρ0
b
r1 := = Normal(b) = Normal(r1 ).
ρ1
Comme cela vient d’être implicitement décrit dans la formulation de cet algo-
rithme d’Euclide étendu, les calculs fournissent les relations suivantes entre les
quantités ri , si , ti :
ρ2 r2 = r0 − q1 r1 , ρ2 s2 = s0 − q 1 s1 , ρ2 t2 = t0 − q1 t1 ,
.. .. .. .. .. ..
. = . . = . . = .
ρi+1 ri+1 = ri−1 − qi ri , ρi+1 si+1 = si−1 − qi si , ρi+1 ti+1 = ti−1 − qi ti ,
.. .. .. .. .. ..
. = . . = . . = .
0 = r`−1 − q` r` , ρ`+1 s`+1 = s`−1 − q` s` , ρ`+1 t`+1 = t`−1 − q` t` ,
18 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

la première colonne ayant déjà été vue, tandis que la seconde et la troisième, en
partant de :
1
s0 := ρ0
, t0 := 0,
1
s1 := 0, t1 := ρ1
,
définissent par induction les quantités :

s2 , . . . , s`+1 et t2 , . . . , t`+1 ,

dont la nature s’éclaircira dans un instant, cf. l’équation (∗) ci-dessus.


Sachant que les deux multiplicateurs de Bézout si et ti se transforment simul-
tanément à chaque étape de l’algorithme, il est naturel de raisonner en termes de
matrices 2 × 2, et plus précisément, il est naturel d’introduire la matrice :
   1 
s0 t0 ρ0
0
R0 := = ,
s1 t1 0 ρ11

accompagnée des ` matrices :


 
0 1
Qi := 1 qi
− ρi+1 (1 6 i 6 `),
ρi+1

et enfin, d’introduire aussi les ` produits de matrices :

Ri := Qi · · · Q1 R0 (1 6 i 6 `).

Lemme ∗. Pour tout entier intermédiaire i avec 0 6 i 6 `, on a :


   
a ri
Ri · = ,
b ri+1

et de plus, ces matrices Ri valent :


 
si ti
Ri = .
si+1 ti+1

avec la convention que ρ`+1 = 1 et que r`+1 = 0.

Démonstration. En effet, pour i = 0, on a tout d’abord bien :


    
a s0 t0 a
R0 · =
b s1 t1 b
 1    a   
ρ0
0 a ρ0 r0
= = = .
0 ρ11 b b
ρ1
r1

Après cela, en supposant par récurrence que l’on a déjà au niveau i :


   
a ri
Qi · · · Q1 R0 · = ,
b ri+1
6. Algorithme d’Euclide étendu 19

il suffit de multiplier cette équation par la matrice Qi+1 pour atteindre le niveau
i+1:    
a ri
Qi+1 Qi · · · Q1 R0 · = Qi+1 ·
b ri+1
  
0 1 ri
= 1
− ρqi+1
ρi+2 i+2
ri+1
!
ri+1
= ri
ρi+2
− qi+1 ri+1
ρi+2
 
ri+1
= .
ri+2
Ensuite, si, à un certain niveau i avec 0 6 i 6 `, la matrice Ri possède bien
l’expression annoncée (ce qui est d’emblée le cas pour i = 0), alors au niveau
i + 1, puisque :
Ri+1 = Qi+1 Ri ,
on déduit l’expression :
    
si ti 0 1 si ti
Qi+1 · = 1
− ρqi+1
si+1 ti+1 ρi+2 i+2
si+1 ti+1
 
si+1 ti+1
= si −qi+1 si+1 ti −qi+1 ti+1
ρi+2 ρi+2
 
si+1 ti+1
= ,
si+2 ti+2
ce qui termine la démonstration. 
L’égalité matricielle de ce lemme s’écrit donc :
    
si ti a ri
= ,
si+1 ti+1 b ri+1
et elle donne, pour tout 0 6 i 6 ` + 1, les identités de Bézout intermédiaires :
si a + ti b = ri .
Au niveau i = ` + 1, puisque le dernier reste r`+1 = 0 est nul, on a donc :
s`+1 a + t`+1 b = 0,
et au niveau i = ` juste avant, on a l’identité de Bézout :
s` a + t` b = r` .
puis que nous pouvons maintenant démontrer effectivement que :
r` = pgcd(a, b).
Lemme ∗. Avec les mêmes notations, toujours pour i = 0, 1, . . . , `, les cinq proprié-
tés suivantes sont satifaites :
(i) pgcd(a, b) = pgcd(ri , ri+1 ) = r` ;
(−1)i
(ii) si ti+1 − ti si+1 = ρ0 ···ρi+1
, et pgcd(si , ti ) = 1 ;
20 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

(iii) pgcd(ri , ti ) = pgcd(a, ti ) ;


(iv)
a = (−1)i ρ0 · · · ρi+1 ti+1 ri − ti ri+1 ,


b = (−1)i+1 ρ0 · · · ρi+1 si+1 ri − si ri+1 .




Démonstration. Pour (i), soit i ∈ {0, . . . , `}. Grâce au lemme qui précède vu au
niveau `, on a :
     
r` a a
= R` = Q` · · · Qi+1 Ri
0 b b
 
ri
= Q` · · · Qi+1 .
ri+1
Cette identité montre que r` est une combinaison linéaire de ri et de ri+1 , donc le
pgcd normalisé entre ri et ri+1 divise r` .
D’un autre côté, puisque le déterminant :
1
det Qi = − ρi+1
est une unité dans A , la matrice Qi est inversible, d’inverse :
 
−1 qi ρi+1
Qi =
1 0
ce qui nous permet d’inverser aisément l’identité que nous venons d’obtenir :
   
ri −1 −1 r`
= Qi+1 · · · Q` .
ri+1 0
Ceci montre que ri et ri+1 sont tous les deux divisibles par r` .
Enfin, puisque r` est normal, et puisque le pgcd est défini de manière unique
en passant à la forme normale, il en découle que :
r` = pgcd(ri , ri+1 ),
ce qui, au niveau i = 0, donne :
pgcd(a, b) = pgcd(r0 , r1 ) = r` .
Ensuite, (ii) se vérifie en calculant des produits de déterminants :
   
si ti s0 t0
si ti+1 − ti si+1 = det = det Ri = det Qi · · · det Q1 det
si+1 ti+1 s1 t1
(−1)i
= ,
ρi+1 · · · ρ2 ρ1 ρ0
ce qui implique (exercice mental) que :
pgcd(si , ti ) = 1 .

Maintenant pour (iii), observons que les deux pgcd incorporent ti . Pour mon-
trer qu’il sont égaux, il suffit donc (exercice mental) de faire voir que pour tout
diviseur d de ti :
d | a ⇐⇒ d | ri .
Soit donc d un diviseur quelconque de ti .
6. Algorithme d’Euclide étendu 21

Si d | a, alors aussi d divise si a + ti b = ri .


Inversement, si d divise ri , alors aussi d divise ri − ti b = si a. Mais comme
pgcd(si , ti ) = 1, tout diviseur d de ti est premier avec si , et donc si d divise si a,
c’est que d doit diviser a.
Pour (iv), puisque qu’il découle de (ii) (exercice visuel) que la matrice Ri est
inversible d’inverse :
 
−1 i ti+1 − ti
Ri = (−1) ρ0 · · · ρi+1
− si+1 si
on peut récrire l’identité du lemme qui précède sous la forme :
   
a −1 ri
= Ri
b ri+1
  
i ti+1 − ti ri
= (−1) ρ0 · · · ρi+1
− si+1 si ri+1
 
i ti+1 ri − ti ri+1
= (−1) ρ0 · · · ρi+1
− si+1 ri+1 + si ri+1
ce qui conclut la démonstration 
L’explication démonstrative de l’Algorithme de division euclidienne étendue
est achevée. 
22 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Théorème des restes chinois


Exponentiation rapide par répétition de carrés
 
Anneaux Z nZ, +
   
Groupe Z nZ × des éléments inversibles de Z nZ, +
Test de primalité de Miller-Rabin
Nombres de Carmichael

François DE M ARÇAY
Département de Mathématiques d’Orsay
Université Paris-Sud, France

1. Complément culturel sur la division euclidienne


Les mathématiciens connaissent la probabilité asymptotique que deux
nombres entiers choisis au hasard soient premiers entre eux, elle vaut :

Card 1 6 a, b 6 N : a ∧ b = 1
 
6 log N
= 2 +O .
N2 π N
Cette constante π62 est la même que dans le résultat qui détermine la probabi-
lité qu’un nombre entier n’ait pas de facteurs premiers répétés :

Card 1 6 n 6 N : n n’a pas de facteurs carrés
 
6 1
= 2 +O √ .
N π N
Toutefois, dans ce cours, nous ne pourrons pas démontrer ces résultats avan-
cés. Tout ce qui suit dans cette section pourra aussi être admis, sans chercher à
résoudre les exercices qui se dégagent implicitement d’énoncés attractifs.
Pour deux entiers 1 6 b 6 a, notons :
`(a, b) = `(r0 , r1 )
1. Complément culturel sur la division euclidienne 23

le nombre d’étapes de division qui interviennent lorsqu’on applique l’algorithme


d’Euclide :
r0 = q1 r1 + r2 ,
r1 = q2 r2 + r3 ,
... ... ...

ri−1 = qi ri + ri+1 ,
... ... ...

r`−2 = q`−1 r`−1 + r` ,


r`−1 = q` r` + 0.
De ces relations découle :
`(r0 , r1 ) = 1 + `(r1 , r2 ),
= 2 + `(r2 , r3 ),
······················ · ·
= ` − 1 + `(r`−1 , r` )
= `.
On peut aussi montrer qu’après élagage du pgcd :
a = a0 · pgcd(a, b) et b = b0 · pgcd(a, b),
on a égalité :
`(a, b) = `(a0 , b0 ).
Il découle de ces observations que les temps d’effectuation de l’algorithme
d’Euclide peuvent varier de manière très forte pour des nombres voisins : par
exemple `(a, b) et `(a, b + 1) peuvent être très différents, en fonction de la taille
des pgcd respectifs.
La suite de Fibonacci :
F0 = 1,
F1 = 1,
Fn+2 = Fn+1 + Fn ,
lorsqu’on la lit à l’envers en partant d’un élément F` pour redescendre jusqu’à
F0 = 1 prédit à coup sûr le nombre d’étapes :
F` = 1 · F`−1 + F`−2 ,
F`−1 = 1 · F`−2 + F`−3 ,
························
F1 = 1 · F0 + 0.
Théorème ∗. [Lamé 1844] Si, pour deux nombres entiers :
1 6 b < a,
l’algorithme d’Euclide requiert un nombre fixé ` d’étapes, alors les plus petites va-
leurs de a et de b sont :
a = F` et b = F`−1 . 
24 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Ensuite, lorsqu’on fixe a > 2, le nombre moyen d’étapes nécessaires jusqu’à ce


que l’algorithme d’Euclide atteigne le pgcd pourrait être défini comme :
1 X
`(a, b),
a 06b6a−1
mais on constate, à cause des fluctuations terribles de `(a, b), que cette ‘valeur
moyenne candidate’ fluctue encore trop.
Pour réduire ce bruit intempestif, une meilleure définition consiste à calculer
la moyenne en ne considérant que les entiers b qui sont premiers avec a :
1 X
`(a) := `(a, b),
ϕ(a) 06b6a−1
pgcd(a,b) = 1

où la fonction n 7−→ ϕ(n), appelée indicatrice d’Euler, compte le nombre d’en-


tiers m inférieurs à n qui sont premiers avec n :

ϕ(n) = Card 1 6 m 6 n : m ∧ n = 1 .
Théorème ∗. Asymptotiquement lorsque a −→ ∞, le nombre moyen de divisions
`(a, b) qui interviennent lorsqu’on applique l’algorithme d’Euclide à des couples
(a, b) avec 0 6 b 6 a − 1 se comporte comme :
1 X 12 1
`(a, b) = 2 log 2 log a + C + O a− 6 −ε ,

ϕ(a) 06b6a−1 π
pgcd(a,b) = 1

où la constante C est la constante de Porter :


1 6 log 2 2 0

C = − + 4 γ − 24 π ζ (2) + 3 log 2 − 2
2 π2
≈ 1, 467 · · · .
Ici, γ est la constante d’Euler-Mascheroni :
 
1 1 1 1 1 1
γ = limN →∞ + + + + + ··· + − log N
1 2 3 4 5 N
= 0, 577215665 · · · ,
et ζ 0 (2) est la dérivée au point 2 de la fonction ζ de Riemann :

X 1
ζ(s) = .
k=1
ks
Mais ne nous effrayons pas ! Ce qui compte ici, c’est d’avoir entrevu que la
théorie des nombres dispose de moyens d’investigation extraordinaires.
À présent, redescendons sur Terre !

2. Théorème des restes chinois


Soit maintenant A un anneau commutatif unitaire euclidien normal, muni
donc d’une fonction de taille utile pour réaliser des divisions successives, et tel
que tout élément a ∈ A possède une unique forme normale ce qui permet de
sélectionner des pgcd et des ppcm uniques.
2. Théorème des restes chinois 25

Puisque nous travaillerons en fait principalement avec l’anneau le plus


concret et le plus parlant qu’est A = Z, il est avisé de lire les énoncés de cette
Section en remplaçant mentalement A partout par Z.
Soit aussi un nombre r > 1 quelconque d’éléments :
m0 , m1 , . . . , mr−1 ∈ A
qui sont premiers entre eux :

1 = pgcd mi1 , mi2 (0 6 i1 < i2 6 r−1).

Soit aussi le produit de ces éléments :


m := m0 m1 · · · mr−1

= ppcm m0 , m1 , . . . , mr−1 .
Pour tout entier i avec 0 6 i 6 r − 1, on a un homomorphisme d’anneaux par
projection :
πi : A −→ A hmi i


a 7−→ a mod mi ,
où la notation hbi désigne l’idéal engendré par un élément fixé b ∈ A :
hbi := c ∈ A : ∃ d ∈ A , c = d b .


En combinant tous ces r homomorphismes π0 , . . . , πr−1 , on peut introduire


l’homomorphisme produit direct :
Π = π0 × · · · × πr−1 : A −→ A hm0 i × · · · × A hmr−1 i
 
 
a 7−→ a mod m0 , . . . , a mod mr−1 .

Théorème ∗. Cet homomorphisme Π a pour noyau l’idéal :


Ker Π = hmi = m0 m1 · · · mr−1 ,
et de plus, Π est surjectif.
Démonstration. Grâce au fait que les mi sont premiers entre eux, on vérifie pas à
pas les équivalences suivantes :
 
a ∈ Ker Π ⇐⇒ a mod m0 , . . . , a mod mr−1 = 0, . . . , 0
⇐⇒ m0 | a, . . . , mr−1 | a

⇐⇒ ppcm m0 , . . . , mr−1 | a
⇐⇒ m | a,
ce qui fait voir que Ker Π = m .
Ensuite, pour ce qui est de la surjectivité de Π, il est avisé d’effectuer une in-
terpolation de type Lagrange, et le lemme suivant réalise le préparatif nécessaire.
Lemme ∗. Pour tout i = 0, 1, . . . , r − 1, il existe un élément `i ∈ A tel que :

Π(`i ) ≡ 0, . . . , 0, 1, 0, . . . , 0

mod m0 , . . . , mod mi−1 , mod mi , mod mi+1 , . . . , mod mr−1 ,
où l’entrée 1 se situe à la place numéro i.
26 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Démonstration. Si on applique l’algorithme d’Euclide étendu aux deux élé-


ments :
m
= m0 · · · mi−1 mi+1 · · · mr−1 et mi
mi
qui sont visiblement premiers entre eux, i.e. qui satisfont :
 
m
1 = pgcd , mi ,
mi
à la fin des calculs de divisions successives, on trouve en tenant compte éven-
tuellement de normalisations intermédiaires, une relation utile de type Bézout :
m
1 = si + ti mi ,
mi
pour certains éléments si , ti ∈ A .
Or si nous posons alors :
m
`i := si
mi
= si m0 · · · mi−1 mi+1 · · · mr−1 ,
nous voyons immédiatement que :
`i ≡ 0 mod m0 , . . . , `i ≡ 0 mod mi−1 , `i ≡ 0 mod mi+1 , . . . , `i ≡ 0 mod mr−1 ,
tandis que :
`i = 1 − ti mi
≡ 1 mod mi ,
ce qui montre que `i satisfait bien les conditions requises. 

Grâce à ces éléments `i , on peut alors effectuer une interpolation de type La-
grange.
En effet, si nous partons d’un élément arbitraire dans l’espace d’arrivée de
l’homomorphisme Π, noté par exemple :
 
a0 mod m0 , a1 mod m1 , . . . , ar−1 mod mr−1 ,

alors l’élément interpolant :


a := a0 `0 + a1 `1 + · · · + ar−1 `r−1
est un antécédant recherché, puisque l’on vérifie :

Π(a) = Π a0 `0 + a1 `1 + · · · + ar−1 `r−1
= a0 Π(`0 ) + a1 Π(`1 ) + · · · + ar−1 Π(`r−1 )
  
≡ a0 1, 0, 0, . . . , 0, 0 + a1 0, 1, 0, . . . , 0, 0 + · · · + ar−1 0, 0, 0, . . . , 0, 1

≡ a0 , a1 , . . . , ar−1 ,
ce qui termine la démonstration du théorème. 
2. Théorème des restes chinois 27

Théorème ∗. Dans un anneau commutatif unitaire euclidien normal A , si m0 ,


m1 , . . ., mr−1 sont un nombre quelconque r > 1 d’éléments premiers entre eux,
alors on a l’isomorphisme d’anneaux :
.
A m0 m1 · · · mr−1 ∼
= A m0 × A m1 × · · · × A mr−1 ,
  

et de plus, on a l’isomorphisme de groupes multiplicatifs :


 . ×   ×   ×
A m0 · · · mr−1 ∼
= A m0 × · · · × A mr−1 .

Ici, dans un anneau commutatif unitaire B, le sous-groupe des inversibles est :


B × = b ∈ B : il existe b0 ∈ B satisfaisant bb0 = b0 b = 1 .


Démonstration. La première affirmation découle du théorème qui précède, lors-


qu’on se souvient qu’à tout homomorphisme surjectif d’anneaux commutatifs :
Φ: A −→ B
est canoniquement associé, via un résultat connu, l’isomorphisme d’anneaux :
A Ker Φ ∼

= B.
Quant à la seconde affirmation, les équivalences suivantes :
a inversible modulo m ⇐⇒ 1 = pgcd(a, m)
⇐⇒ 1 = pgcd(a, m0 ), . . . , 1 = pgcd(a, mr−1 )
⇐⇒ a inversible modulo mi pour 0 6 i 6 r − 1
l’établissent. 

Algorithme: Restes chinois


• Entrées : Un nombre fini r > 2 d’entiers m0 , m1 , . . . , mr−1 ∈ A premiers entre
eux, ainsi que des éléments quelconques a0 , a1 , . . . , ar−1 ∈ A d’un anneau eucli-
dien normal.
• Sorties : Un élément a ∈ A satisfaisant a ≡ ai mod mi pour tout i = 0, 1, . . . , r −1.
• Algorithme :
 m ←−[ m0 m1 · · · mr−1 .
 Pour 0 6 i 6 r − 1 faire 
calculer m mi
appeler l’algorithme d’Euclide étendu
afin de calculer deux multiplicateurs de Bézout
si mmi + ti mi = 1

ci ←−[ Reste ai si divisé par mi
 Retourner c0 mm0 + c1 mm1 + · · · + cr−1 mm
r−1
.

Par exemple, pour r = 2, m0 = 11, m1 = 13, d’où :


m = 11 · 13 = 143,
28 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

et pour a0 = 2, a1 = 7, il s’agit de trouver a ∈ Z unique avec 0 6 a 6 m − 1 tel que :


a ≡ 2 mod 11,
a ≡ 7 mod 13.

La relation de Bézout entre 11 et 13 fournie par l’algorithme d’Euclide étendu est


alors :
6 · 13 + (− 7) · 11 = 1,
et donc dans les identités :
m
s0 m0
+ t0 m0 ≡ 1,
s1 mm1 + t1 m1 ≡ 1,
on peut choisir :
s0 = 6, t0 = − 7,
s1 = − 7, t1 = 6.
Enfin, on a :
c0 = a0 s0 Reste mod m0 = 2 · 6 Reste mod 11 = 1,
c1 = a1 s1 Reste mod m1 = 7 · (− 7) Reste mod 13 = 3,

et donc :
m m
a = c0 m0
+ c1 m1
= 1 · 13 + 3 · 11
= 46,
résultat qui est confirmé par la vérification suivante :
46 = 2 + 11 · 4◦ ,
46 = 7 + 13 · 3◦ .

3. Division euclidienne dans les anneaux quotients


Grâce à une relation de type Bézout, on démontre aisément (exercice) le résul-
tat suivant, qui possède de très nombreuses applications sur ordinateur.

Théorème ∗. Dans l’anneau quotient :

A

m

d’un anneau commutatif unitaire euclidien normal A par un de ses éléments non
nul m ∈ A \{0}, tout élément a premier avec m possède un inverse a−1 qui est
calculable de manière effective.

Indication: Utiliser l’existence d’éléments s, t ∈ A satisfaisant :

1 = sa + tm. 
4. Exponentiation rapide par répétition de carrés 29

4. Exponentiation rapide par répétition de carrés


Soit maintenant un anneau commutatif unitaire A quelconque, pas forcé-
ment euclidien.
Question ∗. Comment calculer rapidement les grandes puissance entières :
an (n ∈ N)

d’un élément quelconque a ∈ A , notamment dans le cas très concret A = Z.


L’itération naïve :
a, a2 , a3 , a4 , a5 , . . . . . . , an−2 , an−1 , an
est à proscrire, car elle exige n multiplications successives d’éléments dont la
taille grandit exponentiellement.
Une meilleure idée, qui conduit à un nombre très inférieur d’opérations, de
l’ordre de log2 n au lieu de n, consiste en fait ici à décomposer l’entier n sous forme
binaire (en base 2) :
n = 2k + nk−1 2k−1 + · · · + n1 2 + n0 ,
avec des entrées :
nk−1 , . . . , n1 , n0 ∈ {0, 1},
et à appliquer l’algorithme suivant, dont la formulation quelque peu
« cabalistique » sera immédiatement suivie d’éclaircissements lumineux.
Algorithme: Exponentiation rapide
• Entrées : Un élément a ∈ A et un exposant n > 1.
• Sortie : La valeur an .
• Algorithme :
 Représentation binaire
n = 2k + nk−1 2k−1 + · · · + n1 2 + n0
 bk ←−[ a
 Pour i = k − 1, k − 2, . . ., 1, 0, faire
si ni = 1 faire bi ←−[ b2i+1 a
autrement faire bi ←−[ b2i+1
 Retourner b0

Par exemple, en partant de la représentation dyadique :


13 = 23 + 1 · 22 + 0 · 21 + 1 · 20 ,
cet algorithme dit qu’il faut procéder comme suit pour calculer la puissance 13-
ème d’un élément quelconque a ∈ A :
 2 2
a13 = a2 · a · a,
affirmation qui exige encore quelques explications.
30 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

En effet, l’algorithme général ci-dessus travaille avec les expressions intermé-


diaires suivantes, pour 0 6 i 6 k :
n
bi := aEnt 2i
2k +nk−1 2k−1 +···+n1 21 +n0
= aEnt 2i ,

en partant du haut pour i = k :

2k +nk−1 2k−1 +···+n1 21 +n0


bk = aEnt 2k

= a,

pour redescendre d’un cran à i = k − 1 :


(
Ent
2k +nk−1 2k−1 +···+n1 21 +n0
Ent
2k +nk−1 2k−1 a2 lorsque nk−1 = 0,
bk−1 = a 2k−1 = a 2k−1 =
a2 · a lorsque nk−1 = 1,

et ainsi de suite. Dans le cas de n = 13, les valeurs successives b3 , b2 , b1 , b0 (finale)


sont alors effectivement :

b3 = a,
b2 = (b3 )2 · a = a2 · a,
2
b1 = (b2 )2 = a2 · a ,
2

2
2 2
b0 = (b1 ) · a = a · a · a,

comme cela vient d’être annoncé il y a quelques secondes.



Il se trouve que c’est dans les anneaux quotients Z ν Z que cet algorithme d’ex-
ponentiation rapide fonctionne de la manière la plus performante, grâce au fait
que la réduction modulo ν réfrène constamment la propension qu’ont les entiers
à exploser en taille.
Soit en effet par exemple à calculer :

813 mod 17.

La méthode naïve s’imaginera qu’il suffit de calculer d’abord indépendamment :

813 = 549 755 813 888,

pour diviser ensuite ce très grand nombre — inférieur toutefois au nombre total
d’euros qui sont soustraits aux impôts citoyens de tous les pays du monde et qui
sont planqués dans des sociétés-écrans offshore domiciliées à Panama ou dans
les îles anglo-normandes — par 17.
4. Exponentiation rapide par répétition de carrés 31

Mais il est beaucoup plus astucieux d’appliquer l’algorithme d’exponentiation


rapide en réduisant modulo 17 à chaque étape de calcul, ce qui conduira aux ac-
tions suivantes, volontairement très détaillées :
  2 2
813 = 82 · 8 ·8
 2 2
≡ −4·8 ·8
  2
2
≡ 2 ·8
≡ 42 · 8
≡ 16 · 8
≡ −1 · 8
≡ 9.

Algorithme: Exponentiation rapide modulo m


• Entrées : Un élément a ∈ A , un module entier m > 2 et un exposant n > 1.
• Sortie : La valeur an mod m.
• Algorithme :
 Représentation binaire
n = 2k + nk−1 2k−1 + · · · + n1 2 + n0
 bk ←−[ a
 Pour i = k − 1, k − 2, . . ., 1, 0, faire
si ni = 1 faire bi ←−[ b2i+1 a mod m
autrement faire bi ←−[ b2i+1 mod m
 Retourner b0 mod m

En 1758, Euler a découvert que le cinquième nombre de Fermat :


5
22 + 1 = 4 294 967 297,
très inférieur, en euros, aux plus grandes fortunes de France protégées de l’impôt
avec le consentement passif des législateurs, n’est pas un nombre premier, et qu’il
est divisible par :
5
641 22 + 1.
Pour voir cela, Euler se propose tout d’abord un petit entraînement, qui
consiste à calculer — à la main mon cher Watson ! — le nombre :
7160 mod 641,
et Euler commence par calculer, toujours modulo 641, les nombres successifs :
72 , 74 , 78 , 716 , 732 , 764 , 7128 ,
ce qui lui donne :
49, 478, 288, 255, 284, 531, 562,
32 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

en prenant bien sûr les carrés des nombres qui précèdent, et avec la petite astuce
micro-géniale qui passe en douce, Euler récupère le résultat intermédiaire 732
qu’il n’a qu’à relire sur son manuscrit, pour calculer enfin 1 :
7160 = 7128 · 732 ≡ 640 mod 641.
Mais ce ne sont pas les puissances de 7 qui intéressent Euler, c’est le cinquième
nombre de Fermat !
Théorème ∗. [Euler 1732] Contrairement à ce que Fermat affirmait, le nombre
5
22 + 1 n’est pas un nombre premier, et il est divisible par le nombre premier 641, à
savoir on a :
5
22 ≡ − 1 mod 641.
Démonstration. Il suffit de partir d’un nombre encore trop petit pour que sa ré-
duction modulo 641 commence à prendre effet, par exemple :
3
22 = 28 = 256 mod 641,
pour monter ensuite deux crans plus haut tout en réduisant modulo 641 chaque
fois que cela est possible :
 3  2
5 2
22 ≡ 22
 2 2
≡ 256 mod 641 mod 641
 2
≡ 65536 mod 641
2
≡ 154 mod 641
≡ 23716 mod 641
≡ − 1 mod 641,
ce qui conclut en beauté cette découverte fantastique. 
En effet, la découverte d’Euler était fantastique : arrêtons-nous quelques ins-
tants pour en dire plus.
Définition ∗. Pour n > 0 entier, le n-ème nombre de Fermat est :
n
Fn := 22 + 1.
1. Pour rendre transparente la difficulté, mentionnons que :
732 = 1104427674243920646305299201,
et pour faire transpirer un peu plus les électrons-esclaves de notre ordinateur, ajoutons que :
7128 = 1487815647197611695910312681741273570332356717154
798949898498305086387315423300999654757561928633305897036801,
ce qui, au final, devrait donner quelque chose d’aussi astronomique que :
7160 = 164318477493817185791700041055654480634183741959952349706976
4671233207565562287891877564323818254449486910838997871467298047369612896001,
tandis que, modulo 641, tout reste sur Terre, puisqu’on trouve −1 mod 641 comme résultat final !
4. Exponentiation rapide par répétition de carrés 33

Ces nombres doivent leur nom au mathématicien français Pierre de Fermat


(1601–1665) qui émit la conjecture erronée que tous ces nombres étaient pre-
miers.
Ironie cinglante : tous les nombres de Fermat connus, depuis F5 , F6 , F7 , . . .,
jusqu’à :
32
F32 = 22 + 1,
ne sont pas premiers.
Assertion ∗. Les seuls nombres de Fermat premiers connus sont donc :
F0 = 3, F1 = 5, F2 = 17, F3 = 257, F4 = 65537.
En 1640, dans une lettre adressée à Bernard Frénicle de Bessy, Pierre de Fermat
énonce son petit théorème, puis il commente :
Et cette proposition est généralement vraie en toutes progressions et en tous nombres pre-
miers ; de quoi je vous envoierois la démonstration, si je n’appréhendois d’être trop long.

Dans cette même lettre, il émet la conjecture que ces nombres sont tous pre-
miers, quoiqu’il reconnaisse :
Je n’ai pu encore démontrer nécessairement la vérité de cette proposition.

Mais cette hypothèse le fascine littéralement.


Deux mois plus tard, dans une lettre à Marin Mersenne, il écrit en effet :
Si je puis une fois tenir la raison fondamentale que 3, 5, 17, etc. sont nombres premiers, il
me semble que je trouverai de très belles choses en cette matière, car j’ai déjà trouvé des choses
merveilleuses dont je vous ferai part.

Il écrit encore à Blaise Pascal :


Je ne vous demanderais pas de travailler à cette question si j’avais pu la résoudre moi-même.

Dans une lettre non datée que Fermat a envoyée à Kenelm Digby, et qu’il a
aussi envoyée en copie à John Wallis le 16 juin 1658, Fermat présente encore
sa conjecture comme étant non démontrée. Toutefois, dans une lettre de 1659
à Pierre de Carcavi, Fermat s’exprime en des termes qui, selon certains commen-
tateurs, impliquent qu’il estime avoir trouvé une démonstration.
Mais en 1732, le jeune Leonhard Euler, à qui Christian Goldbach avait signalé
cette conjecture trois ans auparavant, la réfute spectaculairement :
5
F5 = 22 + 1 est divisible par 641.
Or la motivation initiale de Fermat était de trouver une formule qui produise
une infinité de nombres premiers 2. Il connaissait l’énoncé élémentaire suivant.
Lemme ∗. Si k > 1 est un entier tel que le nombre 2k + 1 est premier, alors k est une
puissance de 2.

2. On peut démontrer qu’il n’existe aucune formule utile ou viable ayant cette propriété.
34 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Démonstration. Pour k > 1 quelconque, il existe un entier a ∈ 2 N + 1 impair et


un entier b > 0 tels que :
k = a 2b .
b
En posant c := 22 , on dispose alors des égalités suivantes :
b
1 + 2k = 1 + 2a 2
= 1 + ca
a−1
X
= (1 + c) (−1)i ci ,
i=0

lesquelles montrent que 1 + c serait un diviseur du nombre premier 1 + 2k si on


avait a > 2, ce qui est impossible, donc a = 1 et enfin k = 2b . 
Fermat a conjecturé (erronément, comme on l’a vu) que la réciproque de
ce lemme était vraie, après avoir confirmé (aisément) que les cinq premiers
nombres :
F0 = 3,
F1 = 5,
F2 = 17,
F3 = 257,
F4 = 65537,
sont tous premiers.
De nos jours encore, on ignore cruellement s’il existe d’autres nombres de Fer-
mat qui sont premiers. On sait que F5 , F6 , . . ., F32 sont tous composés, mais on ne
sait pas si F33 est premier ou composé.
Le plus grand nombre de Fermat dont on sait qu’il est composé est :
F2 747 499 ,
et on sait que l’un de ses diviseurs est :
57 · 22 747 499 + 1.
En fait, Euler avait démontré le :
Théorème ∗. Tout facteur premier p d’un nombre de Fermat Fn est de la forme :
p = k 2n+1 + 1,
où k est un entier.
n
Démonstration. Si un nombre premier p divise 22 + 1 = Fn , alors modulo p, ce
nombre Fn est congru à 0 modulo p, d’où :
n
22 ≡ − 1 mod p,
puis en prenant les carrés :
n 2 n+1
22 = 22 ≡ 1 mod p,
 ×
si bien que l’ordre multiplicatif de 2 dans le groupe Z pZ est égal précisément
à 2n+1 .
4. Exponentiation rapide par répétition de carrés 35

Or grâce aux rappels de la Section 5 qui suit, et grâce au (petit) Théorème ∗


de Fermat, cet ordre multiplicatif doit être un diviseur de p − 1, ce qui termine la
démonstration. 
Ceci permet d’ailleurs à Euler de trouver rapidement par une autre voie que F5
est divisible par 641.
En effet, on cherche un entier k tel que le nombre :
p = k 26 + 1 = 64 k + 1
soit à la fois premier et diviseur strict de F5 . Les premières valeurs de k ne
conviennent pas, mais dès k = 10, on constate que p = 641 est premier.
Ensuite, puisque l’on a modulo p = 641 :
4 4 4
54 · 232 = 5 · 28 = 5 · 128 · 2 = 640 · 2 ≡ (−2)4 mod 641 ≡ 16 mod 641,
et par ailleurs :
54 · 232 ≡ 54 mod 641 × 232 ≡ 625 mod 641 × 232 ≡ − 16 × 232 mod 641,
 

d’où en comparant ces deux résultats :


16 mod 641 ≡ − 16 × 232 mod 641,
et enfin, après division par 16 qui est premier avec 641 :
232 ≡ −1 mod 641,
ce qui montre bien que F5 est divisible par 641.
Le cas général est un problème difficile du fait de la taille des entiers Fn , même
pour des valeurs relativement faibles de n.
Aujourd’hui, le plus grand nombre de Fermat dont on connaisse la factorisa-
tion complète est F11 , et le plus grand de ses cinq diviseurs premiers possède 560
chiffres. Les factorisations complètes des Fn , pour n entre 5 et 10, sont, elles aussi,
entièrement connues.
En ce qui concerne F12 , on sait qu’il est composé mais c’est le plus petit
nombre de Fermat dont on ne connaisse pas la factorisation complète.
Quant à F20 , c’est le plus petit nombre de Fermat composé dont on ne
connaisse aucun diviseur premier.
En géométrie, le théorème de Gauss-Wantzel énonce une condition nécessaire
et suffisante pour qu’un polygone régulier soit constructible à la règle et au com-
pas.
Théorème ∗. [Gauss-Wantzel] Un polygone régulier à n côtés inscrit dans un cercle
de rayon 1 dans le plan euclidien est constructible à la règle et au compas si et
seulement si n est le produit d’une puissance de 2 et d’un nombre fini de nombres
premiers de Fermat distincts. 
Ainsi un polygone régulier à n côtés est constructible à la règle et au compas
pour les valeurs :
n = 3, 4, 5, 6, 8, 10, 12, 15, 16, 17, 20, 24, . . . ,
tandis qu’il n’est pas constructible pour les valeurs :
n = 7, 9, 11, 13, 14, 18, 19, 21, 22, 23, 25, . . . .
36 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Par exemple, la construction à la règle et au compas de l’heptagone régulier


est impossible car le nombre premier 7 n’est pas de Fermat.
L’entier 9 = 32 est le carré d’un nombre premier de Fermat, donc l’ennéagone
régulier n’est pas constructible non plus.
Ironie fermatique : comme on ne connaît pour l’instant que cinq nombres de
Fermat premiers, les seuls entiers n auxquels s’applique le théorème de Gauss-
Wantzel sont de la forme :
n = 2a 30 ou 1 50 ou 1 170 ou 1 2570 ou 1 655370 ou 1 ,
où a > 1 est un entier quelconque.
 
5. Anneaux Z nZ, +
Dans la suite, on notera :
P = 2, 3, 5, 7, 11, 13, 17, 19, . . .


l’ensemble des nombres premiers.


Voici d’ailleurs la liste complète de ceux qui sont inférieurs à 1 000 :
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61,
67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137,
139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211,
223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283,
293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379,
383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461,
463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563,
569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643,
647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739,
743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829,
839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937,
941, 947, 953, 967, 971, 977, 983, 991, 997.
Définition ∗. Rappelons que pour tout entier n > 1, le quotient :
 
Z nZ, + = Z modulo n Z

= 0, 1, 2, 3, . . . , n − 1 mod n
désigne l’ensemble des nombres entiers a ∈ Z identifiés lorsqu’ils diffèrent d’un
multiple de n :
a ≡ a0 mod n ⇐⇒ a − a0 = est divisible par n.
Cet ensemble n’est pas seulement un groupe additif, c’est aussi un anneau
commutatif (exercice). La démonstration du résultat suivant est aussi laissée en
exercice de révision.
Théorème ∗. Si p > 2 est un entier, les trois conditions suivantes sont équivalentes :
(i) p ∈ P est premier ;
 
5. Anneaux Z nZ, + 37

(ii) l’anneau Z pZ est intègre ;

(iii) l’anneau Z pZ est un corps. 
Les groupes élémentaires que nous allons considérer ici seront tous de cardi-
nal fini, et d’ailleurs aussi, ils seront commutatifs.
Définition ∗. Un ensemble G de cardinal fini est appelé un groupe (abstrait) s’il
existe une opération interne :
G × G −→ G
(g, g 0 ) 7−→ g · g 0
souvent notée sans symbole spécifique, comme l’est la « multiplication » entre
nombres réels, qui est associative :
g1 · (g2 · g3 ) = (g1 · g2 ) · g3 (∀ g1 , g2 , g3 ∈ G),

avec la propriété qu’il existe un unique élément neutre e ∈ G satisfaisant :


e·g =g·e (∀ g ∈ G),

et avec la propriété que tout élément g ∈ G admet un unique inverse g −1 ∈ G


satisfaisant :
e = g · g −1 = g −1 · g (∀ g ∈ G).

Par exemple :  
Z nZ, +
est manifestement un groupe commutatif pour l’opération d’addition · = +,
l’élément neutre étant :
e = 0.

Il est connu qu’on peut se représenter la liste de tous les éléments de Z nZ
comme étant :
 n o
Z nZ = 0, 1, 1 + 1, 1 + 1 + 1, . . . , 1| + 1 +{z· · · + 1} mod n,
n−1 fois

avec bien entendu un retour-en-boucle à 0 lorsqu’on ajoute encore +1 au dernier


élément :
0 = |1 + 1 + ·{z
· · + 1 + 1} .
n fois
Sans démonstrations, rappelons encore d’autres résultats utiles de théorie élé-
mentaire des groupes finis.
Théorème ∗. Dans un groupe fini G, on a pour tout élément g ∈ G :
g Card g = e. 
Évidemment, lorsque k > 1 est un entier, on abrège ici :
gk = g · · · · · g,
| {z }
k fois

avec par convention :


g 0 = e.
38 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Définition ∗. L’ordre d’un élément g ∈ G appartenant à un groupe fini G est


l’entier :
ord(g) = min k ∈ N>1 : g k = e .


Non seulement cet entier est 6 Card G, mais encore, on démontre qu’il divise
toujours ce cardinal :
ord(g) | CardG.
Plus généralement, on a un résultat classique, non redémontré ici.
Théorème ∗. [Lagrange] Le cardinal de tout sous-groupe :
H ⊂ G
d’un groupe fini G divise iceluy :
Card H Card G. 
Définition ∗. Un groupe fini G est dit cyclique lorsqu’il contient au moins un
élément :
g ∈ G
qui l’engendre complètement :
G = e, g 1 , g 2 , g 3 , . . . , g Card g−1 ,


avec bien entendu le retour-à-zéro-en-boucle :


g g Card g−1 = g Card g = e.

En particulier, Z nZ est cyclique, puisque son élément :
1 mod n
l’engendre trivialement.
Du point de vue de la théorie des groupes abstraits finis, les groupes cycliques
sont vraiment les plus simples qui soient. On vérifie (exercice) que tout groupe
cyclique est commutatif, ce qui, d’ailleurs, découle aussi instantanément du ré-
sultat fondamental et élémentaire suivant.
Théorème ∗. Tout groupe
 cyclique de cardinal fini égal à un entier n > 1 est iso-
morphe à Z nZ, + . 
Oui ! L’isomorphisme est intuitivement immédiat ! Car il suffit de lire les puis-
sances :
g k ←→ k mod n.
Question ∗. Peut-on décrire tous les sous-groupes de :
 
Z nZ, + ?
La réponse est oui, et nous allons rappeler la solution (il existe d’autres pro-
blèmes de sous-groupes beaucoup plus difficiles que celui-là !). Commençons
par un résultat flagrant :
Théorème ∗. Si un groupe abstrait fini G est cyclique, alors tout sous-groupe :
H ⊂ G
est lui aussi fini cyclique.
 
5. Anneaux Z nZ, + 39

Démonstration. Puisque H ⊂ G, on a en effet :


Card H 6 Card G < ∞.
Notons pour abréger :
m := Card H, n := Card G.
Par hypothèse de cyclicité, il existe un élément g ∈ G tel que :
G = 1, g, g 2 , . . . , g n−1 .


Maintenant, introduisons astucieusement l’entier :


` := min 1 6 k 6 n − 1 : g k ∈ H .


Assertion ∗. Alors l’élément du sous-groupe H :


h := g `
l’engendre complètement :
e, h1 , h2 , . . . , hm−1 .

H =
Démonstration. Puisque h ∈ H, il est évident que la collection infinie de toutes
ses puissances h1 , h2 , h3 , . . ., appartient encore à H, et on sait que cette collection
effectue une boucle :
hCard H = e.
D’un autre côté, si h0 ∈ H\{e} est un élément quelconque, nous devons faire
voir qu’il s’écrit comme une certaine puissance de h.
Or comme h0 ∈ G appartient au groupe cyclique G, il existe un entier 1 6 k 0 6
n − 1 tel que :
0
h0 = g k .
Par définition de `, on a k 0 > `, donc on peut diviser k 0 par `, ce qui donne :
0
h0 = g k
0 0
= g q `+r ,
avec bien entendu un reste qui satisfait :
0 6 r0 6 ` − 1,
et comme on peut inverser tout élément dans un groupe, on déduit de cette der-
nière équation que :
0 0
h0 g − q ` ,
g r = |{z}
| {z }
∈H ∈H
0
et enfin par minimalité de `, l’appartenance de g r à H ne peut se produire que
pour r0 = 0. Au final :
q0
h0 = g `
0
= hq
s’écrit bien comme une certaine puissance de h. 
Ainsi, H est engendré comme suite de puissances (cycliques) d’un de ses élé-
ments, ce qui conclut. 
40 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France
 
L’application aux sous-groupes de Z nZ, + est alors transparente. Rappe-
lons que dans un groupe fini, le cardinal de tout sous-groupe fini divise celui du
groupe ambiant.
Théorème ∗. Soit un entier quelconque n > 2. Pour tout diviseur d de n, il existe
un unique sous-groupe de :  
Z nZ, +
de cardinal égal à d, et ce sous-groupe, explicitement constitué des d éléments :
 
n n n n
0, 1 · , 2 · , 3 · , . . . . . . , (d − 1) · mod n,
d d d d
est isomorphe à :  
Z dZ, + .
Il faut bien noter que lorsque d parcourt tous les diviseurs de n, on peut obtenir
de la sorte un fort grand nombre de sous-groupes.
Par exemple, puisque la liste complète des diviseurs de n = 12 est :
1, 2, 3, 4, 6, 12,
ce théorème fait naître tous les sous-groupes cycliques suivants :
     
Z 1 Z = {0}, Z 2Z, Z 3Z, Z 4Z, Z 6Z, Z 12Z,
qui sont d’ailleurs organisés en treillis de sous-groupes subtilement inclus les uns
dans les autres : 
Z 12Z
55 HH
vv 55 HHH
vv
vv
v 55 HHHH
vv 55
 55 
Z 4Z 5 k
Z 6Z
55 kkk55
55
kkk kkkk 55
55
k kkkk 55
 kk5k55k
55

Z 2Z Z 3Z
HH 5 v
HH 55 vv
HH 5 vv
HH 55 vv
H vv
{0},
tout segment signifiant que le groupe en-dessous est un sous-groupe
 du groupe
au-dessus, toute
 absence de segment signifiant qu’un Z rZ n’est pas un sous-
groupe d’un Z sZ, pour r 6 s.
Démonstration du Théorème ∗. Soit donc d un diviseur quelconque de n. Évi-
demment, l’ensemble :
 
n n n n
Hd := 0, 1 · , 2 · , 3 · , . . . . . . , (d − 1) · mod n,
d d d d
 
est de cardinal d, et c’est aussi un sous-groupe additif de Z nZ, + , comme on
le vérifie (exercice).
Soit maintenant par ailleurs :
 
K ⊂ Z nZ, +
 ×  
6. Groupe Z nZ des éléments inversibles de Z nZ, + 41

un sous-groupe quelconque de cardinal CardH = d égal à un diviseur d de n.


Grâce au Théorème ∗ qui précède, K est cyclique.
Autrement dit, il existe un élément a ∈ K d’ordre égal à Card K = d et qui
engendre : 
K = 0, 1 · a, 2 · a, . . . , (d − 1) · a mod n,
avec donc aussi :
d a ≡ 0 mod n,
i.e. il existe un entier k > 1 tel que :
d a = k n.
Mais alors l’élément :
n
a = k
d
appartient manifestement au groupe Hd défini à l’instant, et ensuite, toutes les
puissances de a appartiennent encore Hd , d’où :
K ⊂ Hd ,
et enfin, comme par hypothèse :
Card K = Card Hd = d,
on ne peut qu’avoir K = Hd , ce qu’il fallait établir. 
 
Pour terminer sur les sous-groupes de Z nZ, + , le résultat suivant déter-
mine tous ses générateurs cycliques.
Théorème ∗. Soit un entier n > 2 quelconque et soit un entier 1 6 a 6 n − 1. Les
trois conditions suivantes sont équivalentes :
(i) pgcd(a, n) = 1 ;
 
(ii) l’élément a mod n est inversible dans Z nZ, + ;
(iii) l’élément a mod n engendre :
  
Z nZ, + = 0 · a, 1 · a, 2 · a, . . . , (n − 1) · a .
Démonstration. C’est une conséquence (exercice) de la relation de Bézout :
1 = s a + t n,
avec s, t ∈ N, les détails de révisions étant laissés au lecteur. 
 ×  
6. Groupe Z nZ des éléments inversibles de Z nZ, +
Ce résultat d’apparence élémentaire ouvre en faite de nouvelles questions, no-
tamment concernant la structure de l’ensemble des éléments inversibles :
 ×
Z nZ := a mod n : a possède un inverse a0 satisfaisant aa0 ≡ a0 a ≡ 1 mod n ,


dont on vérifie (exercice) qu’il est stable par multiplication (résolution de l’exer-
cice) : )
1 = aa0 = a0 a
0 0 =⇒ 1 = abb0 a0 = b0 a0 ab,
1 = bb = b b
42 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France
 ×
ce qui munit Z nZ d’une structure de groupe multiplicatif, comme le signale
le symbole « × » en exposant.

Définition ∗. Pour tout entier n > 2, l’indicateur d’Euler est la fonction :



ϕ(n) = Card 1 6 a 6 n − 1 : pgcd(a, n) = 1
 ×
= Card Z nZ
n    o
= Card a ∈ Z nZ : 0, a, 2 a, 3 a, . . . , (n − 1) a = Z nZ.

Trois exemples :
 × 
Z 6Z = 1, 5 ,
 × 
Z 10Z = 1, 3, 7, 9 ,
 × 
Z 21Z = 1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20 .

Mais ces trois exemples concrets font surgir un problème : comment s’effectue la
 ×
table de multiplication dans le groupe des éléments inversibles Z nZ ?
Comparée à l’addition qui s’effectuait si facilement dans Z nZ, + , il semble
que la multiplication se comporte de manière assez chaotique.
 ×
Table de multiplication de Z 6Z :

× 1 5

1 1 5

5 * 1

 ×
Table de multiplication de Z 10Z :

× 1 3 7 9

1 1 3 7 9

3 * 9 1 7

7 * * 9 3

7 * * * 1

 ×
Table de multiplication de Z 21Z :
 ×  
6. Groupe Z nZ des éléments inversibles de Z nZ, + 43

× 1 2 4 5 8 10 11 13 16 17 19 20

1 1 2 4 5 8 10 11 13 16 17 19 20

2 * 4 8 10 16 20 1 5 11 13 17 19

4 * * 16 20 11 19 2 10 1 5 13 17

5 * * * 4 19 8 13 2 17 1 11 16

8 * * * * 1 17 4 20 2 10 5 13

10 * * * * * 16 5 4 13 2 1 11

11 * * * * * * 16 17 8 19 20 10

13 * * * * * * * 1 19 11 16 8

16 * * * * * * * * 4 20 10 5

17 * * * * * * * * * 16 8 4

19 * * * * * * * * * * 4 2

20 * * * * * * * * * * * 1

Pour l’instant, face à ces difficultés, contentons-nous de mentionner que la


notion de groupe des inversibles possède un sens au sein de structures algé-
briques générales.
Définition ∗. Dans un anneau commutatif unitaire A , l’ensemble :
A × := a ∈ A : il existe a0 ∈ A satisfaisant aa0 = a0 a = 1 ,


est un groupe pour l’opération de multiplication.


Contentons-nous aussi d’observer que lorsque l’entier :
n = p ∈ P
est un nombre premier quelconque, il est clair que tous les entiers qui lui sont
inférieurs :
1, 2, 3, . . . , (p − 1)
sont premiers avec p, et donc :
ϕ(p) = p − 1 (p ∈ P).

Autrement dit :
 ×
Card Z pZ = p − 1 (p ∈ P).

Alors le Théorème ∗ qui dit que tout élément g ∈ G d’un groupe fini satisfait
Card G
g = e se lit ici comme le célèbre :
Théorème ∗. [Petit Fermat] Si p ∈ P est un nombre premier, alors pour tout entier
1 6 a 6 p − 1, on a :
ap−1 ≡ 1 mod p. 
44 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Plus généralement, lorsque n > 2 est un entier quelconque, nous venons de


voir que :

Card Z nZ = ϕ(n),
et à nouveau, une application instantanée du même Théorème ∗ donne le :

Théorème ∗. [Euler] Dans Z nZ, tout entier 1 6 a 6 n − 1 premier avec n :
a∧n = 1
satisfait :
aϕ(n) ≡ a mod n. 
Concernant l’indicateur d’Euler, on a par exemple :
ϕ(12) = 4,
puisque {1, 5, 7, 11} sont, comme on peut le vérifier en catimini, les seuls nombres
compris entre 1 et 12 qui sont premiers avec 12.
Il n’est pas difficile de calculer ϕ(n) pour tout entier n.
Rappelons à cet effet que tout entier n ∈ N se décompose sous forme d’un
produit de facteurs premiers à certaines puissances, tous déterminés de manière
unique :
n = pα1 1 pα2 2 · · · pακ κ ,
où :
2 6 p1 < p2 < · · · < pκ ,
sont les facteurs premiers distincts de n, et où les exposants sont tous strictement
positifs :
α1 > 1, α2 > 1, . . . . . . , ακ > 1,
écriture que l’on peut aussi abréger au moyen d’une formule élégante ne com-
portant plus aucun indice :
Y
n = pvp (n) ,
p∈P

où, par définition, la fonction :


n 7−→ vp (n)
est la valuation p-adique qui capture l’exposant de p dans la représentation fac-
torisée de n.
Une conséquence du Théorème ∗ des restes chinois est le résultat suivant,
dont la démonstration est abrégée sous forme d’exercice de lecture-révision.
Théorème ∗. Sur toute puissance r-ème, avec r > 1, d’un nombre premier p ∈ P,
l’indicateur d’Euler vaut :
ϕ pr = pr − pr−1 ,


puis si a ∧ b = 1 sont deux entiers premiers entre eux, il vaut sur leur produit :
ϕ(a b) = ϕ(a) ϕ(b),
 ×  
6. Groupe Z nZ des éléments inversibles de Z nZ, + 45

et enfin, si un entier n est décomposé en produit de facteurs premiers, on a la for-


mule générale :
ϕ pα1 1 · · · pακ κ = ϕ pα1 1 · · · ϕ pακ κ
  

= pα1 1 − pα1 1 −1 · · · pακ κ − pακ κ −1 .


 

Démonstration. On vérifie en effet que les seuls nombres :
1 6 a 6 pr
qui ne sont pas premiers avec pr sont ceux qui s’écrivent :
a = p a0 ,
et le nombre de tels a0 est tout simplement égal à pr−1 .
Ensuite, la deuxième partie du Théorème ∗ qui concerne le groupe des élé-
ments inversibles d’un anneau commutatif unitaire :
 . ×   ×   ×
A m0 · · · mr−1 ∼
= A m0 × · · · × A mr−1 ,

appliquée ici à notre situation, donne :


  ×   ×   ×
Z pα1 1 · · · pακ κ Z ∼
= Z p α1
Z × · · · × Z p ακ
Z ,
1 κ

et une simple prise de cardinal à droite et à gauche conclut. 


En tout cas, souvenons-nous qu’il ne faut pas confondre le groupe additif :
  
Z pZ, + = 0, 1, 2, . . . , p − 1 mod p,
et le groupe des inversibles, muni de la multiplication :
 × 
Z pZ = 1, 2, . . . , p − 1 ,
puisque, comme nous venons de le voir, les tables de multiplication réservent des
surprises arithmétiques.
Heureusement, un résultat central rétablit une espèce de régularité dans tout
ce désordre des tables de multiplication. La démonstration apparaît à la fin de
cette Section.
Théorème ∗. Si un nombre p ∈ P est premier, alors le groupe des éléments inver-
sibles modulo p :
 ×
Z pZ
est un groupe cyclique de cardinal p − 1.
Mais il ne faut pas croire que cette structure de groupe cyclique soit facile à
capturer ou à comprendre complètement.
Par exemple pour p = 17 ∈ P, les 16 puissances de 3 :
30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 ,
38 , 39 , 310 , 311 , 312 , 313 , 314 , 315 ,
46 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France
 ×
décrivent tous les éléments de Z pZ , puisqu’on vérifié, à la main ou avec l’aide
d’un calculateur digital, que modulo 17, ces nombres sont congrus à :
30 ≡ 1, 31 ≡ 3, 32 ≡ 9, 33 ≡ 10, 34 ≡ 13, 35 ≡ 5, 36 ≡ 15, 37 ≡ 11,
38 ≡ 16, 39 ≡ 14, 310 ≡ 8, 311 ≡ 7, 312 ≡ 4, 313 ≡ 12, 314 ≡ 2, 315 ≡ 6.

Il ne faut pas croire non


 plus
× que lorsqu’un entier n > 2 est composé, les
groupes multiplicatifs Z nZ possèdent aussi une structure aussi simple que
 ×
celle des Z pZ , et d’ailleurs, le Théorème ∗ ci-dessous énonce une caractéri-
sation de cyclicité.
Comme nous savons grâce  au Théorème
 ∗ élémentaire que tout groupe cy-
clique est isomorphe à un Z nZ, + , nous déduisons instantanément le :
Corollaire ∗. Si un nombre p ∈ P est premier, alors le groupe des éléments inver-
sibles modulo p :
 ×
Z pZ
est un groupe cyclique isomorphe à :
 ×
Z pZ ∼
 
= Z (p − 1)Z, + . 
Cet isomorphisme rappelle l’application exponentielle :
R, +, 0 −→ R∗+ , ×, 1
 

a 7−→ ea =: x,
mais il cache des problèmes mathématiques délicats, cf. ce qui va suivre.
Question ∗. Comment trouver des générateurs explicites des groupes cycliques
 ×
Z pZ lorsque p ∈ P est premier ?
En tout cas pour l’instant, dès qu’on connaît au moins un générateur, à savoir
un certain élément :
 ×
a ∈ Z pZ ,
dont les puissances successives décrivent tout le groupe des inversibles :
1, a1 , a2 , . . . , ap−2 mod p = 1, 2, 3, . . . , p − 1 mod p,
 

il est facile alors de connaître tous les autres éléments :


 ×
b ∈ Z pZ ,
jouissant de la même propriété :
1, b1 , b2 , . . . , bp−2 mod p = 1, 2, 3, . . . , p − 1 mod p.
 

Corollaire ∗. Si p ∈ P>2 est un nombre premier quelconque, il y a exactement


 ×
ϕ(p − 1) générateurs du groupe cyclique Z pZ :
n o
ϕ(p−1) = Card b ∈ (Z/pZ)× : 1, b1 , b2 , . . . , bp−2 mod p = 1, 2, 3, . . . , p−1 mod p .
 
 ×  
6. Groupe Z nZ des éléments inversibles de Z nZ, + 47

Démonstration. En effet, l’existence d’un seul générateur a du groupe cyclique


 ×
Z pZ fournit un isomorphisme — dépendant de a ! — :
 ×
Z pZ ∼
 
= Z (p − 1)Z, + ,
et le Théorème ∗ a déjà déterminé l’ensemble des générateurs du groupe additif
situé à droite :
n     o
c ∈ Z (p − 1)Z, + : 1, c, 2c, . . . , (p − 2)c = 1, 2, 3, . . . , p − 1 ,

qui est tout simplement :


 
c ∈ Z (p − 1)Z : c ∧ (p − 1) = 1 ,
un ensemble dont le cardinal est effectivement égal à ϕ(p − 1), par définition
même de l’indicateur d’Euler ϕ. 
Voici maintenant une table donnant les plus petits générateurs a du groupe
 ×
multiplicatif Z pZ pour tous les nombres premiers p inférieurs à 54 dans les
deux premières colonnes, puis en troisième colonne pour certains nombres pre-
miers inférieurs à 860 qu’on sélectionne pour s’amuser :
2: 1, 23 : 5, 191 : 19,
3: 2, 29 : 2, 211 : 2,
5: 2, 31 : 3, 229 : 6,
7: 3, 37 : 2, 311 : 17,
11 : 2, 41 : 6, 347 : 2,
13 : 2, 43 : 3, 409 : 21,
17 : 3, 47 : 5, 857 : 3,
19 : 2, 53 : 2, 859 : 2.
Manifestement, cette table plutôt irrégulière et imprévisible confirme les difficul-
tés éventuelles qui se cachent derrière la Question ∗.
Énonçons maintenant sans démonstration le théorème général promis, qui
caractérise la cyclicité de ces groupes multiplicatifs.
Théorème ∗. Pour un entier n > 2, le groupe des éléments inversibles modulo n :
 ×
Z nZ
est un groupe cyclique lorsque et seulement lorsque l’entier n est de l’une des trois
formes suivantes :
• n = 4, 2, 1 ;
• n = pk pour p ∈ P>3 premier et tout exposant k > 1 ;
• n = 2 pk pour p ∈ P>3 premier et tout exposant k > 1. 
Par exemple, modulo 14, le groupe des inversibles possède les 6 = ϕ(14) élé-
ments spécifiques :
 × 
Z 14Z = 1, 3, 5, 9, 11, 13 .
48 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Admettre, comme l’affirme le Théorème ∗, que ce groupe est cyclique, c’est ad-
mettre qu’il existe parmi les 4 éléments qui ne sont pas congrus à +1 ou à −1 :
3, 5, 9, 11,
au moins un élément a dont les six puissances successives :
a0 mod 14, a1 mod 14, a2 mod 14, a3 mod 14, a4 mod 14, a5 mod 14,
 ×
parcourent tous les 6 éléments de Z 14Z , peut-être dans un ordre chaotique.
Ici, il est naturel de commencer par tester a = 3, et cela marche :
30 ≡ 1 mod 14,
31 ≡ 3 mod 14,
32 ≡ 9 mod 14,
33 ≡ 13 mod 14,
34 ≡ 11 mod 14,
35 ≡ 5 mod 5,
on retrouve bien la liste de tous éléments (dans le désordre) :
 
1, 3, 9, 13, 11, 5 = 1, 3, 5, 9, 11, 13 ,
sachant bien comme cela était prévisible à l’avance par le Théorème ∗ d’Euler,
que cette suite boucle à partir de l’exposant 6 = ϕ(14) :
36 ≡ 1 mod 14.
À la mainou sur
× un ordinateur, on vérifie par ailleurs que 5 est le seul autre élé-
ment de Z 14Z dont les puissances successives parcourent l’ensemble com-
plet des 6 éléments {1, 3, 5, 9, 11, 13}.
Il convient aussi d’attribuer un nom aux éléments qui engendrent ces groupes
cycliques.
 ×
Définition ∗. Lorsque Z nZ est un groupe cyclique, à savoir lorsque n est sous
l’une des trois formes du Théorème ∗, on appelle racine primitive modulo n tout
élément b qui en est un générateur :
×  ×
1, b1 , b2 , . . . , bCard (Z/nZ) −1 = Z nZ .


Voici aussi un autre résultat général, admis ici sans démonstration.


Théorème ∗. Pour tout entier n > 2 tel que le groupe des inversibles modulo n :
 ×
Z nZ
est cyclique, donc tel que n est sous l’une des trois formes du Théorème ∗, le nombre
de racines primitives modulo n est égal à :

ϕ ϕ(n) . 
 ×  
6. Groupe Z nZ des éléments inversibles de Z nZ, + 49

Notons que pour n = p ∈ P premier, on retrouve bien ce qu’un corollaire vu à


l’instant affirmait : 
ϕ ϕ(p) = ϕ(p − 1).
Malheureusement — ou heureusement du point de vue du Diable des mathé-
matiques —, aucune formule générale simple n’est connue pour calculer les ra-
cines primitives modulo n. Il existe néanmoins des méthodes pour localiser une
racine primitive qui s’avère plus rapide qu’un simple essai de tous les candidats.
Clairement, si par chance l’ordre multiplicatif d’un nombre a modulo n pris au
hasard est égal à :
 ×
ϕ(n) = Card Z nZ ,
alors a est une racine primitive.
On peut d’ailleurs utiliser cette observation triviale pour tester les racines pri-
mitives. On calcule d’abord ϕ(n), puis on détermine ses diviseurs premiers dis-
tincts, soient p1 , . . . , pκ .  ×
Ensuite pour chaque élément a de Z nZ , on calcule :
aϕ(n)/pλ mod n pour λ = 1, . . . , κ,
en utilisant par exemple la méthode d’exponentiation rapide. Dès qu’on trouve
un nombre a pour lequel ces κ résultats sont tous différents de 1, on arrête : a est
une racine primitive modulo n.
Par exemple, pour a = 2, une conjecture due à Emil Artin affirme que l’en-
semble :
S(2) = p ∈ P : 2 est une racine primitive modulo p


devrait posséder la densité :


Card {p ∈ S(2) : p 6 n} Y  1

limn→∞ = 1−
n p∈P
p(p − 1)
premier

= 0, 3739558136 · · · .
Explicitement, les premiers éléments sont :

S(2) = 3, 5, 11, 13, 19, 29, 37, 53, 59, 61, 67, 83, 101, 107, 131, 139,
149, 163, 173, 179, 181, 197, 211, 227, 269, 293, 317, 347, 349,
373, 379, 389, 419, 421, 443, 461, 467, 491, . . . .
Il existe 95 nombres premiers inférieurs à 500, parmi eux, 38 admettent 2 comme
racine primitive. Une proportion initiale de S(2) vaut donc par exemple :
38 2
= = 0, 4,
95 5
et la conjecture affirme que cette proportion tend, lorsque n → ∞, vers la
constante d’Artin 0, 3739558136 · · · .
Démonstration du Théorème ∗. Notre but est de démontrer qu’il existe au moins
un élément a dont l’ordre est maximal possible égal à p − 1, puisqu’alors toutes
les puissances :
1, a1 , a2 , . . . , ap−2
50 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

seront mutuellement distinctes (exercice), et donc a sera un générateur cyclique


 ×
de Z pZ .
Puisque tous les entiers non nuls strictement inférieurs à p sont premiers avec
p, on a :
 × 
Z pZ = 1, 2, . . . , p − 1 mod p.
Pour tout 1 6 a 6 p − 1, le Petit Théorème ∗ de Fermat donne :
ap−1 ≡ 1 mod p,
et puisque le sous-groupe engendré par les puissances de a doit avoir, d’après le
Théorème ∗ de Lagrange, un cardinal qui divise :
 ×
p − 1 = Card Z pZ ,
pour tout 1 6 a 6 p − 1, on déduit que :
ord(a) divise p − 1.
Il est donc naturel, pour des diviseurs d quelconques de p − 1, d’introduire les
ensembles :
Ed := a ∈ (Z/pZ)× : ord(a) = d ,


qui sont clairement disjoints entre eux et dont la réunion est le groupe tout en-
tier : [  ×
Ed = Z pZ ,
d | p−1

d’où il découle que :


X
Card Ed = p − 1. (∗)
d | p−1

Reformulé, notre but est maintenant de démontrer que :


?
Card Ep−1 > 1.
Or pour un diviseur fixé d | p − 1, on a par pure logique idiote :
Card Ed = 0 ou Card Ed > 1.
Dans le deuxième cas, le groupe engendré par un élément quelconque a ∈ Ed est :
1, a1 , a2 , . . . , ad−1 ∼
  
= Z dZ, + ,
et comme on sait alors grâce au Théorème ∗ et à la Définition ∗ que :
n o
ϕ(d) = Card b ∈ {1, a1 , a2 , . . . , ad−1 } tels que {1, b1 , b2 , . . . , bd−1 } = {1, a1 , a2 , . . . , ad−1 } ,
on déduit que :
Card Ed > 1 =⇒ Card Ed > ϕ(d),
ce qui donne :
Card Ed = 0, ou Card Ed > ϕ(d).
Assertion ∗. On a en fait égalité dans le deuxième cas :
Card Ed = 0 ou Card Ed = ϕ(d).
 ×  
6. Groupe Z nZ des éléments inversibles de Z nZ, + 51

Démonstration. Lorsque Card Ed > 1, il existe a ∈ Ed avec :


ad ≡ 1 mod p
tel que les d puissances :
1, a1 , a2 , . . . , ad−1
sont deux à deux distinctes.
Or tous ces éléments-puissances sont racines distinctes du polynôme :
Xd − 1
à coefficients dans le corps :  
Z pZ, +, × .
Qui plus est, tout élément quelconque a0 ∈ Ed est par définition aussi racine du
polynôme X d − 1.
Mais le résultat élémentaire suivant bien connu 3 :
Théorème ∗. Si k est un corps, si P ∈ k[X] est un polynôme à coefficients dans ce
corps, alors P admet au plus deg P racines distinctes dans k. 
assure que a0 est nécessairement égal à l’une des d racines distinctes
1, a1 , a2 , . . . , ad−1 , à savoir il existe un entier 0 6 ` 6 d − 1 tel que :
a0 = a` .
Mais comme a0 ∈ Ed est par hypothèse d’ordre exactement égal à d, le Théorème ∗
et la Définition ∗ imposent :
` ∧ d = 1,
ce qui montre bien que Card Ed = ϕ(d). 

3. Pour ce qui est d’une preuve-express, en écrivant :


X
P (X) = pk X k ,
06k6δ

avec δ := deg P , on peut supposer que pδ = 1, et s’il existe une première racine x1 ∈ k dans le
corps de base k satisfaisant donc P (x1 ) = 0, on peut soustraire puis factoriser :
 X
pk X k−1 + X k−2 x1 + · · · + Xxk−2 + xk−2

P (X) = P (X) − P (x1 ) = X − x1 1 1 .
16k6δ
| {z }
polynôme de degré 6 δ−1

Par récurrence (exercice), on montre en itérant la même idée que si un polynôme unitaire P ad-
met δ = deg P racines distinctes :
x1 , x2 , . . . , xδ ,
alors P se factorise sous la forme intuitivement transparente :
  
P = X − x1 X − x2 · · · X − xδ ,
et il est alors clair que P ne peut vraiment plus admettre une racine supplémentaire :
y 6= x1 , y 6= x2 , ..., y 6= xδ ,
car on a toujours :
P (y) = (y − x1 )(y − x2 ) · · · (y − xδ ) 6= 0.
52 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Maintenant d’un autre côté, puisqu’on a bien compris maintenant qu’on a la


réunion disjointe (exercice !) :
[    
c ∈ Z (p − 1)Z : c est d’ordre (additif) égal à d = Z (p − 1)Z, + ,
d | p−1
| {z }
sous-ensemble de cardinal = ϕ(d)

on obtient en prenant les cardinaux :


X
ϕ(d) = p − 1. (∗∗)
d | p−1

Pour conclure, une simple comparaison entre ces deux égalités (∗) et (∗∗)
convainc (exercice mental) en tenant compte de l’Assertion ∗ que l’on a bien :
Card Ed = ϕ(d),
pour tout diviseur d de p − 1, et en particulier pour d = p − 1 :
n  ×   × o
Card Ep−1 = Card a ∈ Z pZ : 1, a1 , a1 , . . . , ap−1 = Z pZ
= ϕ(p − 1)
> 1,
ce qui conclut la démonstration du théorème.
Répétons toutefois avant de nous évaporer dans la jungle bigarrée de la ban-
lieue parisienne que cette information sur le cardinal ϕ(p − 1) du nombre de gé-
 ×
nérateurs du groupe multiplicatif cyclique Z pZ ne fournit en aucun cas un
moyen de trouver effectivement au moins un tel générateur ! 

7. Nombres pseudo-premiers
Grâce à l’algorithme d’exponentiation rapide présenté dans la Section 4, le
calcul d’une puissance quelconque a∗ d’un entier a modulo n :
a∗ mod n
est relativement accessible.
Question ∗∗. Comment déterminer si un nombre entier n donné est premier ?
Une idée simple consiste à tester si le Petit Théorème ∗ de Fermat est satis-
fait, à savoir si, pour tout entier 1 6 a 6 n − 1, on a bien :
an ≡ a mod n.
Mais pour un a donné et fixé, le fait que an − a soit divisible par n ne garantit
en aucun cas que n soit premier !
Par exemple avec a = 3, le nombre :
n := 91 = 7 · 13
est composé, tandis que l’on a :
391 ≡ 3 mod 91,
comme on peut le vérifier à la main ou sur un ordinateur.
7. Nombres pseudo-premiers 53

L’un des résultats les plus importants de toutes les mathématiques est le sui-
vant, habituellement appelé Théorème des nombres premiers, dont la démons-
tration utilise des méthodes d’Analyse Complexe qui dépassent le cadre d’un
cours de L3 MFA à Orsay.
Théorème ∗∗. [Hadamard, de la Vallée Poussin, 1899] Lorsque x → ∞, le nombre
de nombres premiers inférieurs à x :
π(x) := Card 2 6 p 6 x : p ∈ P est premier


se comporte asymptotiquement comme :


x
π(x) ∼ . 
log x

En connaissant ce résultat, Erdös en 1950 puis plus récemment Li en 1997


on établi un énoncé éclairant sur les pouvoirs du petit théorème de Fermat,
résultat que nous citerons aussi sans démonstration.
Théorème ∗∗. Pour tout entier fixé a > 2, lorsque x tend vers l’infini, il y a re-
lativement de moins en moins de nombres composés n 6 x qui satisfont le petit
théorème de Fermat que de nombres premiers :

Card 2 6 n 6 x : n n’est pas premier mais a satisfait an ≡ a mod n
0 = lim .
Card 2 6 p 6 x : p ∈ P est premier

x→∞

Ce résultat dit donc qu’utiliser les congruences de Fermat afin de distinguer
entre les nombres premiers et les nombres composés est potentiellement très
utile sur le plan pratique, ce qui était connu bien avant les années 1950.

Algorithme: Test de primalité de Fermat


• Entrées : Un entier n > 4 et un entier fixé 2 6 a 6 n − 2.
• Sorties : L’information que n est peut-être premier ou l’information que n est
certainement composé.
• Algorithme :
 Appeler l’algorithme d’exponentiation rapide modulo n pour calculer an mod n.
 Si an ≡ a mod n écrire « n est peut-être premier »
 Si an 6≡ a mod n écrire « n est composé »

Toutefois, cette approche simplette basée sur le petit théorème de Fermat a


des limites. La première est qu’il existe en fait une infinité de nombres n non
premiers qui passent le test.
Théorème ∗∗. Pour tout entier fixé a > 2, on a :
∞ = Card n ∈ N : an ≡ a mod n mais n est composé .


Les arguments étant élémentaires, nous pouvons les détailler comme suit.
54 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Démonstration. Il suffit de trouver une famille infinie d’entiers composés n satis-


faisant an ≡ a mod n. Or nous affirmons que la famille des entiers n paramétrée
par tous les nombres premiers p > a2 :
a2p − 1
n :=
a2 − 1
2p−1
= a + a2p−2 + · · · + a2 + 1
remplit cette fonction. Dorénavant, nous fixerons p.
Tout d’abord, n est composé, parce qu’on peut l’écrire sous la forme :
ap − 1 ap + 1
n = ·
a−1 a+1
= ap−1 + ap−2 + · · · + a + 1 · ap−1 − ap−2 + · · · − a + 1 ,
 

la deuxième simplification étant possible grâce au fait que le nombre premier p


est impair, cf. a3 + 1 = (a + 1)(a2 − a + 1).
Ensuite, on calcule :
a2p − 1 − a2 + 1
n−1 =
a2 − 1
a2p − a2
= 2 ,
a −1
ce qui donne l’identité :
(n − 1) a2 − 1) = a2p − a2 .
Or le petit Théorème ∗ de Fermat appliqué au nombre premier p donne :
ap ≡ a mod p =⇒ a2p ≡ a2 mod p,
c’est-à-dire que p divise a2p − a2 . Mais en revenant à l’identé laissée en chemin,
comme on a supposé 4 que p > a2 , il est impossible que p divise a2 − 1, et donc, il
faut que n − 1 soit divisible par p :
p | n − 1.
Par ailleurs, l’expression polynomiale de n − 1 :
n − 1 = a2p−2 + a2p−4 + · · · + a2 ,
montre que n − 1 est somme d’un nombre pair de termes ayant la même parité
(vérifier cela selon la parité de a), et donc, n − 1 doit aussi être divisible par 2 :
2 | n − 1.
En faisant la synthèse, nous déduisons que :
2 p | n − 1,
i.e. il existe λ > 1 satisfaisant :
λ · 2 p = n − 1.

4. Le raisonnement fonctionnerait tout aussi bien en supposant seulement que p 6 | a2 − 1.


8. Nombres de Carmichael 55

Mais maintenant, nous pouvons calculer et remplacer :


an−1 − 1 = aλ 2 p − 1
= a2p − 1 · a(λ−1)2p + a(λ−2)2p + · · · + a2p + 1
 
| {z }
remplacer

= n · a2 − 1 · a(λ−1)2p + a(λ−2)2p + · · · + a2p + 1


 

pour voir que :


an−1 − 1 ≡ 0 mod n,
et enfin après multiplication par a, nous atteignons an ≡ a mod n. 
Comme jusqu’à présent on a fixé a, et comme le petit Théorème ∗ de Fermat
a ≡ a mod p est en fait vrai pour tout entier a ∈ Z lorsque p ∈ P, il est naturel et
p

légitime de se demander si, en faisant varier a le plus largement possible, à savoir


en testant si l’on a an ≡ a mod n, pour tout 0 6 a 6 n − 1, on ne pourrait pas
déterminer à coup sûr si un entier n est un nombre premier, ou s’il est un nombre
composé. En tout cas, un tel espoir a du sens !

8. Nombres de Carmichael
Mais à cause du Diable de l’Arithmétique, les nombres premiers p ne sont pas
les seuls nombres n qui vérifient le Petit Théorème de Fermat, énoncé sous la
forme :
an ≡ a mod n (∀ 0 a ∈ Z),

car on vérifie par exemple, à la main ou sur un ordinateur, que le nombre com-
posé :
n = 561
= 3 · 11 · 17
satisfait effectivement toutes ces congruences. Effectuons cette vérification à la
main juste après avoir formulé une définition, puisque cela nous procurera plus
de plaisir que sur un ordinateur — de plaisir pour l’exigence de compréhension,
entendons-nous bien !
Définition ∗∗. Un nombre n > 2 est appelé nombre de Carmichael s’il n’est pas
premier, i.e. s’il est composé, et s’il satisfait :
an ≡ a mod n,
pour tout entier 0 6 a 6 n − 1, donc pour tout entier a ∈ Z.
D’après le lemme de Gauss, on déduit (exercice) que pour tout entier a premier
avec n, on a :
an−1 ≡ 1 mod n.
Assertion ∗∗. Le nombre n = 561 = 3 · 11 · 17 est un nombre de Carmichael.
Démonstration. Soit donc un entier 0 6 a 6 561−1. Supposons pour commencer
que a ∧ 561 = 1. Alors on a :
a ∧ 3 = 1, a ∧ 11 = 1, a ∧ 17 = 1.
56 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Or puisque 3, 7, 11 sont premiers, le petit Théorème ∗ de Fermat appliqué trois


fois donne :
a2 ≡ 1 mod 3, a10 ≡ 1 mod 11, a16 ≡ 1 mod 17.
Ensuite, comme :
560 = 2 · 230, 560 = 10 · 56, 560 = 16 · 35,
en prenant les puissances 230-ème, 56-ème, 35-ème des équations modulaires
qui précèdent, on obtient :
a560 ≡ 1 mod 3, a560 ≡ 1 mod 11, a560 ≡ 1 mod 17,
et enfin grâce au fait que 3, 11, 17 sont premiers entre eux, on conclut :
a560 ≡ 1 mod 3 · 11 · 17.
Les cas restants (un peu plus simples) où a n’est pas premier avec n = 561 =
3 · 11 · 17 peuvent être traités de manière similaire à la main, et sont ou bien laissés
en exercice, ou bien considérés comme découlant du Théorème ∗∗ de Korselt
établi en détail plus bas. 
Les trois premiers nombres de Carmichael sont :
561,
1105,
1729.
Une coïncidence amusante est la suivante : le troisième nombre de Carmi-
chael 1729, n’est autre que le nombre de Hardy-Ramanujan, c’est-à-dire le plus
petit entier positif qui peut être écrit de deux façons différentes comme la somme
de deux cubes :
1729 = 7 · 13 · 19
= 103 + 93
= 123 + 13 .
Lemme ∗∗. Tout nombre de Carmichael est impair.
Démonstration. Si un nombre de Carmichael n = 2 n0 était pair, avec n0 > 2 car n
doit être composé, en appliquant la définition à a = − 1, on devrait avoir :
0
(−1)2 n ≡ −1 mod 2 n0 ,
c’est-à-dire :
2 ≡ 0 mod 2 n0 ,
ce qui est impossible puisque 2 n0 > 4. 
Ce n’est qu’en 1994 qu’on a démontré l’existence d’une infinité de nombres de
Carmichael.
En tout cas, le Diable de l’Arithmétique a bien ruiné l’espoir d’avoir un test de
primalité très simple, qui consisterait, pour déterminer si un entier n donné est
premier, à vérifier que l’on a bien an = a mod n pour tout 0 6 a 6 n. Certains
nombres passent en effet le test de Fermat, sans être premiers, et on constate
8. Nombres de Carmichael 57

que plus le plafond qu’on se fixe est grand, plus nombreux sont les nombres de
Carmichael inférieurs à ce plafond (cf. ce qui va suivre).
Affirmation de philosophie des mathématiques. L’ensemble des nombres pre-
miers est infiniment complexe, on ne pourra jamais le comprendre en totalité
avec quelques tests ou recettes mathématiques simples.
Toutefois, on possède des informations précieuses sur ces nombres-trublions
nommés en l’honneur de Robert Carmichael, qui aurait trouvé, en 1909, le plus
petit d’entre eux, 561.
Plus les nombres considérés deviennent grands, plus les nombres de Carmi-
chael rendent le test de primalité de Fermat largement inutile. Par exemple, le
646ème nombre de Carmichael vaut 993 905 641 et il existe 105 212 nombres de Car-
michael entre 1 et 1015 .
Théorème ∗∗. [Korselt 1899] Un nombre composé n > 4 est de Carmichael si et
seulement si il vérifie les deux propriétés suivantes :
(1) n est sans facteur carré ;
(2) pour tout nombre premier p | n qui divise n, le nombre p − 1 doit aussi diviser
n − 1.
Korselt a donc établi son critère plus de dix ans avant la découverte par Car-
michael des nombres éponymes. Sans doute, Korselt avait l’intuition que de tels
nombres ne devraient pas exister, et il a développé ce critère comme première
étape vers une démonstration d’inexistence.
Démonstration. Supposons pour commencer que n est un nombre de Carmi-
chael. En tout cas, n est composé, donc n > 4.
Soit alors p un facteur premier de n :
n = pr n0 ,
avec r > 1 et avec n0 ∧ p = 1.
En appliquant la Définition ∗∗ au nombre a := p, on doit avoir :
pn ≡ p mod(n).
Autrement dit, il existe un entier λ ∈ Z tel que :
pn = p + λ n
= p + λ pr n0 .
Comme n > 4, si jamais on avait r > 2, en réduisant modulo p2 , on obtiendrait la
contradiction :
0 ≡ p mod p2 .
Ceci démontre donc que r = 1, à savoir (1).
Ensuite, pour ce qui est de (2), étant donné un facteur premier quelconque p
de :
n = p n0 avec n0 ∧ p = 1,
puisque l’on sait d’après le Théorème ∗ que le groupe Z pZ)× est cyclique, il

existe un générateur a satisfaisant :
 ×
a , a , a , . . . , ap−2 = Z pZ ∼
 0 1 2  
= Z (p − 1)Z, + ,
58 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

avec ap−1 = 1, à savoir un élément d’ordre exactement égal à :


ord(a) = p − 1.
Ensuite, si on applique la Définition ∗∗ à ce générateur a, on doit avoir :
an ≡ a mod n
≡ a mod p n0 ,
d’où instantanément :
an ≡ a mod p,
mais comme a est de facto premier avec p (exercice mental), le lemme de Gauss
permet de déduire que :
an−1 ≡ 1 mod p,
ce qui implique par définition-propriété de l’ordre que :
n−1 est un multiple de p − 1 = ord(a),
et achève d’établir (2).
À présent, démontrons la réciproque. Soit donc n un nombre composé sans
facteur carré dont tout facteur premier p | n a la propriété que p − 1 divise n − 1. Il
s’agit de faire voir que an ≡ a modulo n pour tout entier a ∈ Z.
Or puisque n est sans facteur carré :
n = p1 · · · pκ ,
avec des nombres premiers distincts 2 6 p1 < · · · < pκ , il suffit en fait de faire voir
que :
an ≡ a mod pλ (∀ 1 6 λ 6 κ),

car alors, an −a sera multiple de p1 , de p2 , . . ., de pκ , donc du produit p1 p2 · · · pκ = n,


cf. le Théorème ∗ des restes chinois.
Soit donc p | n un facteur premier de n, et soit a ∈ Z un entier quelconque. Si a
n’est pas divisible par p, grâce au Petit Théorème ∗ de Fermat, on a :
ap−1 ≡ 1 mod p,
et puisque par hypothèse p − 1 | n − 1, il vient par exponentiation entière :
an−1 ≡ 1 mod p,
et enfin :
an ≡ a mod p.
Or si au contraire a est divisible par p, cette dernière congruence :
an ≡ a mod p,
est trivialement satisfaite, et donc dans tous les cas, on a bien pour tout facteur
premier pλ de n les congruences désirées. 
Corollaire ∗∗. Les nombres de Carmichael comportent toujours au moins trois fac-
teurs premiers (distincts).
8. Nombres de Carmichael 59

Démonstration. Soit un nombre composé de Carmichael ne contenant que deux


facteurs premiers :
n = p1 p 2 ,
nécessairement distincts d’après la condition (1) du Théorème de Korselt qui ex-
prime que n doit être sans facteur carré :

2 6 p1 < p2 .

D’après la condition (2), il est aussi nécessaire, simultanément, que :


p1 − 1 divise p1 p2 − 1,
p2 − 1 divise p1 p2 − 1.

Examinons seulement la seconde condition, qui s’exprime comme :

p1 p2 − 1 = s (p2 − 1),

pour un certain entier s > 1. Nous affirmons que cela est impossible, puisque :

s 6 p1 =⇒ s(p2 − 1) 6 p1 (p2 − 1)
= p1 p 2 − p1
< p1 p2 − 1,

et puisque :
s > p1 + 1 =⇒ s(p2 − 1) > (p1 + 1)(p2 − 1)
= p1 p2 + p2 − p1 −1
| {z }
>1
> p1 p2 − 1,

et donc aucun entier s ne peut convenir. 

La liste des 10 premiers nombres de Carmichael comportant quatre facteurs


premiers est :
41041 = 7 · 11 · 13 · 41,
62745 = 3 · 5 · 47 · 89,
63973 = 7 · 13 · 19 · 37,
75361 = 11 · 13 · 17 · 31,
101101 = 7 · 11 · 13 · 101,
126217 = 7 · 13 · 19 · 73,
172081 = 7 · 13 · 31 · 61,
188461 = 7 · 13 · 19 · 109,
278545 = 5 · 17 · 29 · 113,
340561 = 13 · 17 · 23 · 67.
60 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Les plus petits nombres de Carmichael incorporant exactement 3, 4, 5, 6, 7, 8, 9


facteurs premiers sont :
561 = 3 · 11 · 17,
41041 = 7 · 11 · 13 · 41,
825265 = 5 · 7 · 17 · 19 · 73,
321197185 = 5 · 19 · 23 · 29 · 37 · 137,
5394826801 = 7 · 13 · 17 · 23 · 31 · 67 · 73,
232250619601 = 7 · 11 · 13 · 17 · 31 · 37 · 73 · 163,
9746347772161 = 7 · 11 · 13 · 17 · 19 · 31 · 37 · 41 · 641.
Théorème ∗∗. [Chernick 1939] Si, pour un entier k > 2, les trois nombres :
6 k + 1 ∈ P, 12 k + 1 ∈ P, 18 k + 1 ∈ P,
sont tous premiers, alors leur produit :
  
6 k + 1 12 k + 1 18 k + 1
est un nombre de Carmichael
Démonstration. La preuve, facile et laissée comme exercice de lecture, consiste à
vérifier que la condition (2) du Théorème de Korselt est satisfaite. 
On ne sait pas si cette formule, ou d’autres similaires, engendre une infinité de
nombres de Carmichael lorsque k décrit l’ensemble des entiers.
Mentionnons enfin deux résultats qui vont au-delà d’un cours de L3 MFA à
Orsay.
Théorème ∗∗. [Erdös 1956] Il existe une constante A > 0 telle que le nombre C(n)
des nombres de Carmichael inférieurs ou égaux à n est majoré par :
A log n log log log n
n e− log log n .
Erdös a aussi donné des arguments heuristiques en faveur de l’hypothèse se-
lon laquelle pour tout ε > 0, on devrait avoir :
C(n) > n1−ε ,
ce qui entraînerait bien sûr l’existence d’une infinité de nombres de Carmichael.
Toutefois on ne connaît aucune valeur numérique x assez grand pour que C(n) >
1
n 2 . Nos meilleurs ordinateurs demeurent donc quelque peu « faiblards » face à
l’infini réel des nombres de Carmichael !
Théorème ∗∗. [Alford, Granville, Pomerance] Il existe n0  1 tel que pour tout
entier n > n0 , le nombre C(n) de nombres de Carmichael inférieurs ou égaux à n
est minoré par :
2
C(n) > n 7 .
Exemple :
C(1021 ) = 20 138 2006
2
> 1021 7
= 1 000 000.
9. Test de primalité de Miller-Rabin 61

En 2013, il a été démontré qu’il existe une infinité de nombres de Carmichael


dans toute suite arithmétique : 
an + b
avec pgcd(a, b) = 1.
Conjecture ∗∗. [Erdös, Pomerance] Le nombre C(n) de nombres de Carmichael
inférieurs ou égaux à n devrait être asymptotiquement égal à :
log log log n
C(n) = n1−(1+o(1)) log log x .

9. Test de primalité de Miller-Rabin


Le test de primalité de Miller-Rabin est un test de primalité probabiliste, c’est-
à-dire un algorithme qui détermine si un nombre donné est probablement pre-
mier. Il se trouve que ce test est l’un des plus efficaces connus dans la pratique.
Comme d’autres tests de primalité (test de Fermat, test de Solovay-Strassen), le
test de Miller-Rabin consiste à tirer parti d’une équation ou d’un système d’équa-
tions qui sont vraies pour tout nombre premier p, et à regarder si ces équations
demeurent toujours vraies (ou non) pour un nombre n dont on souhaite déter-
miner s’il est premier.
En particulier, si au moins une des équations testées n’est pas satisfaite, on
peut affirmer avec certitude que n n’est pas un nombre premier.
Définition ∗∗. Un nombre entier n ∈ N>1 qui n’est pas premier est dit composé.
Soit un nombre premier impair p > 3. Le test de Miller-Rabin va consister à
explorer des racines carrées successives dans le Petit Théorème de Fermat, dont
nous rappelons l’énoncé.
Théorème ∗∗. Pour tout entier 1 6 a 6 p − 1, on a modulo le nombre premier p :
ap−1 ≡ 1 mod p. 
Puisque ce célèbre exposant p − 1 est pair, il se décompose sous la forme :
p − 1 = 2s t,
avec épuisement du facteur 2 :
s>1 maximal possible,
donc avec un dernier facteur impair :
t ∈ 2 N + 1.
Alors dans l’exponentation de Fermat, des carrés successifs appraissent, par
exemple au début :
s
ap−1 = a2 t
s−1 2
= a2 t
≡ 1 mod n.
Ensuite, comme on sait que +1et −1 sont les seules racines du polynôme qua-
dratique X 2 − 1 dans le corps Z p Z, on doit nécessairement avoir ou bien :
s−1 t s−1 t
a2 ≡ + 1 mod n ou bien a2 ≡ − 1 mod n.
62 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Dans la première circonstance, i.e. lorsque c’est +1 qui apparaît, si on a encore


s − 1 > 1, à savoir si :
s−2 2
a2 t ≡ +1 mod n,
on peut réappliquer le même raisonnement et obtenir :
s−2 t s−2 t
a2 ≡ + 1 mod n ou bien a2 ≡ − 1 mod n.
À chaque fois que l’on trouve − 1, on stoppe le processus, et à chaque fois que l’on
trouve +1, on re-prend la racine carrée, et ce, jusqu’à épuisement de l’exposant
s > 1. Au final, on obtient un énoncé dont la vérification (mentale !) est laissée au
lecteur-étudiant.
Proposition ∗∗. Étant donné un nombre premier p > 3, pour tout entier :
2 6 a 6 p − 1,
si on décompose :
p − 1 = 2s t
avec s > 1 et t impair, alors :
i
at ≡ 1 mod p ou ∃ i ∈ {0, 1, . . . , s − 1} a2 t
≡ − 1 mod p. 
Supposons maintenant que soit donné un certain entier impair n > 3, par
exemple en base 10, dont on souhaite déterminer s’il est un nombre premier. Bien
entendu, on commence par décomposer de même n − 1 sous la forme :
n − 1 = 2s t.
Par contraposition de la proposition qui précède, si par chance on a choisi au
hasard et trouvé par (mal)chance un certain nombre a tel que :
at 6≡ − 1 mod n,
1
t
a2 t 6≡ − 1 mod n,
a 6≡ 1 mod n et 
··· · ············· · ·
s−1
a2 t
6≡ − 1 mod n,
alors on est certain que le nombre n n’est pas premier.

Algorithme: Test de primalité de Miller-Rabin


• Entrées : Un nombre premier impair n > 3 et un nombre 2 6 a 6 n − 2 choisi
aléatoirement.
• Sorties : L’information que n est certainement composé, ou que n est peut-être
un nombre premier.
• Algorithme :
 Décomposer n − 1 = 2s t avec s > 1 et avec t > 3 impair.
 si at ≡ 1 (mod n) écrire « n est peut-être premier »
pour i = 0, 1, . . . , s − 1
i
si a2 t ≡ − 1 (mod n) écrire « n est peut-être premier »
i
 si at 6≡ 1 (mod n) et si a2 t 6≡ − 1 (mod n) pour i = 0, 1, . . . , s − 1 écrire « n est
composé »
9. Test de primalité de Miller-Rabin 63

Avec des moyens mathématiques plus avancés, on démontre les deux résultats
suivants.
Proposition ∗∗. Si le nombre n est composé, alors au moins les trois quarts des
n − 2 entiers a avec 2 6 a 6 n − 1 sont tels que le test de Miller-Rabin montre
effectivement que n est composé.
Cette proposition est conséquence du résultat suivant.
Théorème ∗∗. [Rabin] Soit n > 11 un entier composé. Soient s > 1 et t ∈ 2N + 1
tels que :
n − 1 = 2s t.
Alors les entiers 2 6 a 6 n − 1 qui satisfont ou bien à :
at ≡ 1 mod n,
ou bien à l’une des conditions :
i
a2 t ≡ − 1 mod n,
pour un i avec 0 6 i 6 s − 1, sont en nombre au plus égal à ϕ(n)/4.

—————–
64 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Initiation au logiciel libre de calcul Sage

François DE M ARÇAY
Département de Mathématiques d’Orsay
Université Paris-Sud, France

1. Accéder à Sage
2. Sage comme calculatrice 65

2. Sage comme calculatrice

2.1. Premier calcul :.

2.2. Calculatrice simple :. Pour la multiplication, utiliser *

sage: (1 + 2*(3 + 5))*2


34

2.3. Puissance :.

sage: 2^3
8

2.4. Division :.
66 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

sage: 20/6
10/3

2.5. Quotient de la division euclidienne entre deux entiers :.

sage: 20//6
3

2.6. Reste de la division euclidienne entre deux entiers :.

sage: 20 % 6
2

2.7. Plusieurs opérations sur une seule ligne :. Utiliser un point-virgule :

sage: 20//6; 20 % 6
3; 2

3. Quelques opérations usuelles


4. Syntaxe générale 67

4. Syntaxe générale

4.1. Traitement des instructions :. Il peut se faire ligne par ligne, mais pas néces-
sairement.
68 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

4.2. Plusieurs instructions par ligne :. Séparer par un point-virgule :

sage: 1+1; 2+2;


2
4

4.3. Commenter une ligne sans qu’elle soit lue par Sage :. Utiliser le caractère
croisillon « # » :

sage: 2*3; 3*4; 4*5 # Trois résultats sont attendus


6
12
20

4.4. Effectuer plusieurs retours à la ligne avant d’exécuter une commande :.


Utiliser le caractère « \ » :

sage: 123 + \
....: 345
468

5. Fonctions élémentaires

5.1. Fonctions trigonométriques :. Les calculs sont exacts, non numériques :

5.2. Commande simple souvent utile :. Simplify


7. Affectations de variables et Égalité 69

sage: simplify(arcos(sin(pi/3)))
(1/6)*pi

sage: simplify(exp(i*pi/6))
(1/2)*sqrt(3) + 1/2*I

5.3. Constantes prédéfinies :.

6. Aide en ligne et Complétion automatique

6.1. Accéder directement à de l’aide sur une commande :. Placer un point d’in-
terrogation juste après la commande :

sage: sin?

6.2. Utiliser la touche <Tab> :.

7. Affectations de variables et Égalité

7.1. Affecter une valeur à une variable se fait par un « = » simple, car Sage n’uti-
lise pas « := ».
7.2. Tester, déclarer une égalité ou comparer deux expressions se fait par un
« == » double.
70 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

7.3. Ne pas confondre :.


Assignation : Symbole égal simple sans deux points « = »
Comparaison : Symbole égal double « == »

7.4. Exemple d’affectation :. Déclarer qu’à la variable y est affectée la valeur 1+2 :

sage: y = 1 + 2
sage: y
3
sage: (2 + y)*y
15

Éventuellement, affecter et réaffecter y :

sage: y = 1 + 2; y
3
sage: y = 3*y + 1; y
10

7.5. Exemple d’égalité :.

sage: a = 1
sage: bool(a==1)
True
sage: bool(a==2)
False

8. Variables symboliques

8.1. Différence importante avec d’autres logiciels de calcul formel (Maple,


Maxima) :. Les variables symboliques du mathématicien, telles que x, y, z,
doivent être déclarées expressément avant d’être employées.
8.2. Déclaration standard de variable formelle :. Dans l’exemple qui suit, la
commande SR.var(’z’) « construit » une variable symbolique z.

8.3. Déclaration abrégée de variables formelles :. De même, la commande


var(’x’) « construit » une variable symbolique x.
8. Variables symboliques 71

sage: var(’x’)
x
sage: 2*x+3
2*x+3

et pour plusieurs variables :

sage: var(’a, b, c, x, y’)


(a, b, c, x, y)
sage: a*x+b*y+c
a*x + b*y + c

8.4. Substituer une valeur à une variable symbolique :.

sage: var(’x’)
sage: expr = sin(x); expr
sin(x)
sage: expr(x=1)
sin(1)

8.5. Évaluer une expression :. Utiliser la commande .subs

ou encore :

8.6. Remplacer une sous-expression plus complexe qu’une variable :. Utiliser la


commande
72 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

8.7. Fonctions symboliques :. Définir des fonctions symboliques afin de mani-


puler des expressions :

sage: f(x)=(2*x+1)^3; f(-3)


-125
sage: f.expand()
x |--> 8*x^3 + 12*x^2 + 6*x + 1

8.8. Déclarer une fonction :. Utiliser la commande function

sage: var(’x, y’); u = sin(x) + x*cos(y)


sage: v = u.function(x,y); v
(x, y) |--> x*cos(y) + sin(x)

Alternative :

sage: var(’x, y’); u = sin(x) + x*cos(y)


sage: w(x, y) = u; w
(x, y) |--> x*cos(y) + sin(x)

8.9. Développer une expression :. Utiliser la commande expand

8.10. Regrouper des termes :. Utiliser la commande collect

sage: x, y = SR.var(’x,y’)
sage: p = (x+y)*(x+1)^2
sage: p2 = p.expand();
sage: p3 = p2.collect(x); p3
(y+2)*x^2 + x^3 + (2*y + 1)*x + y

8.11. Exemple utilisant simultanément :. expand et collect


10. Fonctions mathématiques usuelles 73

9. Polynômes et Fractions Rationnelles

9.1. Commandes très souvent utiles :.

expand

collect

factor

combine

9.2. Exemples nombreux :.


74 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

10. Fonctions mathématiques usuelles

10.1. Commandes spécifiques pour simplifier :.

simplify_trig

simplify_exp

simplify_factorial

10.2. Exemples :.

sage: f = (e^x-1) / (1 + e^(x/2))


sage: f.simplify_exp()
e^(1/2*x) - 1

sage: f = cos(x)^6 + sin(x)^6 + 3*sin(x)^2*cos(x)^2


sage: f.simplify_trig()
1

10.3. Factorielles :.

sage: n = var(’n’)
sage: f = factorial(n+1)/factorial(n)
sage: f.simplify_factorial()
n+1
11. Résolutions d’équations 75

11. Résolutions d’équations

11.1. Résumé-anticipation :.

11.2. Résolution
 πexplicite :. Considérons l’équation d’inconnue z ∈ C et de pa-
π

ramètre ϕ ∈ − 2 , 2 :
2 5
z2 − z+ − 4 = 0.
cosϕ cos2 ϕ

sage: z, phi = var(’z,phi’)


sage: eq = z^2 - 2*z/cos(phi) + 5/cos(phi)^2 - 4 == 0
z^2 - 2*z/cos(phi) + 5/cos(phi)^2 - 4 == 0

11.3. Extraction du membre de gauche et du membre de droite :.

sage: eq.lhs()
z^2 - 2*z/cos(phi) + 5/cos(phi)^2 - 4
sage: eq.rhs()
0

11.4. Résoudre :. Utiliser la commande solve

sage: solve(eq, z)

et obtenir :
 p p 
2cos(ϕ)2 − 1 − 1 2 cos(ϕ)2 − 1 + 1
z = −2 , z = −2 .
cos(ϕ) cos(ϕ)

11.5. Exemple :.

sage: y = var(’y’); solve(y^6==y, y)


[y == e^(2/5*I*pi), y == e^(4/5*I*pi), y == e^(-4/5*I*pi),
y == e^(-2/5*I*pi), y == 1, y == 0]
76 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

11.6. Résoudre numériquement :. Lorsque Sage échoue :

sage: expt = sin(x) + sin(2*x) + sin(3*x)


sage: solve(expr, x)
[sin(3*x) == -sin(2*x) - sin(x)

utiliser la commande find_root qui prend en argument les bornes de l’inter-


valle dans lequel cherche une solution numérique :

sage: find_root(expr, 0.1, pi)


2.0943951023931957

On peut aussi transformer au préalable l’expression, si l’espoir de trouver une


solution exacte persiste :

sage: f = expr.simplify_trig(); f
2*(2*cos(x)^2 + cos(x))*sin(x)
sage: solve(f, x)
[x == 0, x == 2/3*pi, x == 1/2*pi]

11.7. Résolution dans un corps déclaré :. La commande roots permet d’obte-


nir les solutions exactes d’une équation avec multiplicité, dans un corps donné.
11.8. Déclarer les deux corps standard R et C :.

sage: ring=RR

sage: ring=CC

11.9. Exemple :. Considérer l’équation x3 + 2 x + 1 = 0.

Sur le corps R :
12. Sommes 77

Sur le corps C :

12. Sommes

12.1. Somme 1 + 2 + 3 + · · · + n :.

sage: k, n = var(’k, n’)


sage: sum(k, k, 1, n).factor()

ce qui donne directement le résultat 12 (n + 1)n.


12.2. Binôme de Newton :.

sage: n, k, y = var(’n, k, y’)


sage: sum(binomial(n,k)*x^k*y^(n-k), k, 0, n)
(x + y)n

12.3. Trois autres exemples :.

sage: k, n = var(’k, n’)


sage: sum(binomial(n,k), k, 0, n), \
....: sum(k*binomial(n,k), k, 0, n), \
....: sum((-1)^k*binomial(n,k), k, 0, n), \

2n , n 2n−1 , 0

12.4. Somme géométrique :.

sage: a, q, k, n = var(’a, q, k, n’)


sage: sum(a*q^k, k, 0, n)

a q n+1 − a
q−1

12.5. Calculer la série infinie :. Préciser que le module de la raison est strictement
inférieur à 1 en valeur absolue :
78 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

sage: assume(abs(q) < 1)


sage: sum(a*q^k, k, 0, infinity)

a

q−1
Exercice 4. [Calcul par récurrence des sommes de puissances p-èmes des n premiers entiers]
Sans utiliser les algorithmes ou fonctions de Sage, calculer, pour p = 0, 1, 2, 3, 4, 5, les sommes :
n
X
Sn (p) = k p = 1 p + 2 p + · · · + np ,
k=1

en utilisant la formule de récurrence suivantes, que l’on démontrera au préalable :


 p−1   
1 X p+1
Sn (p) = (n + 1)p+1 − Sn (j) .
p+1 j=0
j

Indication: Pour obtenir cette formule, calculer de deux manières différentes la somme télésco-
pique :
X h i
(k + 1)p+1 − k p+1 .
06k6n

13. Limites

13.1. Exemple :. Calculer les deux limites :

Obtenir :

sage: limit(f(x), x=pi/4)


Infinity

13.2. Limites à gauche et à droite :.


14. Suites 79

14. Suites

14.1. Exemple :. Étudier la suite :


n100
un = .
100n

14.2. Éviter de croire que un −→ ∞ :.


n→∞

sage: plot(u(x), x, 1, 40)

14.3. Conjecturer que la suite commence à décroître à partir de n = 22 :.

14.4. Calculer enfin la limite :.


80 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

sage: limit(u(n), n=infinity)


0

15. Développements limités

15.1. Commandes :.

f(x).series(x==x0, n)
taylor(f(x), x, x0, n)
15.2. Exemple 1 :. Calculer le développement en x0 = 0 à l’ordre 3 de :
1
1 + arctan x x .

π
15.3. Exemple 2 :. Calculer le développement en x0 = 6
à l’ordre 3 de :

log 2 sin x .

15.4. Extraire :. Utiliser la fonction truncate

15.5. Calculer des développements asymptotiques :. Utiliser la fonction


taylor , à l’infini. Par exemple, trouver pour x → ∞ un équivalent de :
1 1
x3 + x 3 − x3 − x 3 .

sage: taylor( (x^3+x)^(1/3) - (x^3-x)^(1/3), x, infinity, 2)


2/3/x

15.6. Exemple : Formule de Machin 1706 :. L’astronome John Machin (1680–


1752) calcula plus d’une centaine de décimales de π en utilisant la formule dite
d’arc-tangente qui lui est due :
π 1 1
= 4 arctan − arctan .
4 5 239
formule qui connut de nombreuses modifications et améliorations.
16. Séries 81

• Utiliser la fonction simplify_trig :

sage: tan(4*arctan(1/5)).simplify_trig
120/119
sage: tan( pi/4 + arctan(1/239) ).simplify_trig
120/119

• Obtenir une valeur approchée :

Exercice 5. Soit la formule plus longue mais plus efficace due à Gauss :
π 1 1 1 1
= 12 arctan + 20 arctan + 7 arctan + 24 arctan .
4 38 57 239 268
(a) Poser :
1 1 1 1
θ = 12 arctan + 20 arctan + 7 arctan + 24 arctan ,
38 57 239 268
et vérifier avec Sage que tan θ = 1.
(b) Montrer que pour tout x ∈ [0, π/4], on a :
4
tan x 6 π x

(c) En approchant la fonction arctan par son polynôme de Taylor d’ordre 21 en 0, donner une
nouvelle approximation, meilleure, de π.

16. Séries

16.1. Exemple :. Calculs de séries de Riemann :

16.2. Exemple :. Formule due à Ramanujan :


√ ∞
1 2 2 X (4k)! (1103 + 26390 k)
= .
π 9801 k=0 (k!)4 3964k

• Calculer la somme partielle des 12 premiers termes, et obtenir 95 décimales


correctes de π :
82 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

17. Dérivées

17.1. Dériver une fonction d’une variable :. Utiliser la fonction derivative ou


son alias (équivalent) diff

sage: diff(sin(x^2), x)
2*x*cos(x^2)

17.2. Dérivée d’une fonction composée :.

sage: function(’f’, x); function(’g’, x);


f(x)
g(x)
sage: diff(f(g(x)), x)
D[0](f)(g(x))*D[0](g)(x)

sage: diff(ln(f(x)), x)
D[0](f)(x)/f(x)

17.3. Dérivées partielles :. Utiliser aussi la fonction derivative ou diff

sage: f(x,y) = x*y + sin(x^2) + e^(-x); derivative(f, x)


(x, y) |--> 2*x*cos(x^2) + y - e^(-x)
sage: derivative(f,y)
(x, y) |--> x

Exercice 6. On dit qu’une fonction f : Ω −→ R définie dans un ouvert Ω ⊂ R2 muni de coordon-


nées réelles (x, y) ∈ Ω est harmonique lorsque son laplacien s’annule :
∂2f ∂2f
0 = + .
∂x2 ∂y 2
(a) Pour la fonction :
1
log x2 + y 2

f (x, y) =
2
définie sur l’ouvert Ω = R2 \{(0, 0)}, calculer à la main ces deux dérivées partielles et vérifier que
leur somme s’annule identiquement.
(b) En trois lignes de Sage, exécuter ce calcul.
18. Intégration 83

Exercice 7. Soit la fonction de R2 à valeurs dans R définie par :


2 2
 xy x − y

lorsque (x, y) 6= (0, 0),
f (x, y) = x2 + y 2
lorsque (x, y) = (0, 0).

0
Montrer, d’abord à la main et ensuite sous Sage, que les dérivées partielles de f par rapport à x et
à y ne commutent pas à l’origine :
   
∂ ∂ ∂ ∂
f 6= f .
∂y ∂x x=0 y=0 ∂x ∂y y=0 x=0

18. Intégration

18.1. Trouver une primitive et calculer une intégrale définie :. Utiliser la com-
mande integrate , ou son alias (équivalent) integral

sage: sin(x).integral(x, 0, pi/2)


1

sage: integrate(1/(1+x^2), x)
arctan(x)

sage: integrate(1/(1+x^2), x, -infinity, infinity)


pi

sage: integrate(exp(-x^2), x, 0, infinity)


1/2*sqrt(pi)

18.2. Calculer une intégrale dépendant d’un paramètre :. Soit à calculer, pour
un paramètre réel x > 0, l’intégrale définie :
Z ∞
x cos u
ϕ(x) = du.
0 u 2 + x2

• Utiliser la fonction assume

sage: u = var(’u’); f = x*cos(u)/(u^2+x^2)


sage: assume(x>0); f.integrate(u, 0, infinity)
1/2*pi*e^(-x)

18.3. Intégrer numériquement sur un intervalle numérique donné :. Utiliser la


fonction integral_numerical , qui renvoie une valeur approchée de l’inté-
grale en premier argument et une estimation d’erreur en deuxième argument :

sage: integral_numerical(sin(x)/x, 0, 1)
(0.94608307036718287, 1.0503632079297086e-14)
84 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

sage: g = integrate(exp(-x^2), x, 0, infinity)


sage: g, g.n()
(1/2*sqrt(pi), 0.886226925452758)

sage: valeur-approchee = integral_numerical(exp(-x^2), 0, infinity)


sage: valeur-approchee
(0.88622692545275705, 1.7147744320162414e-08)

Exercice 8. [Formule de Bailey-Borwein-Plouffe] Est-il possible de calculer des décimales très


éloignées de π sans avoir à calculer toutes les décimales qui précèdent ? Oui, grâce à une for-
mule spécialement construite pour cela en 1995, qui a permis d’atteindre en 2001 par exemple le
4 000 000 000 000 000ème chiffre de π en base 2.
(a) Pour tout entier N > 1, on introduit :
N    n
X 4 2 1 1 1
SN = − − − .
n=0
8n + 1 8n + 4 8n + 5 8n + 6 16
Montrer que lim SN existe et vaut :
N →∞
√
Z 1 2
f (t)
lim SN = dt.
N →∞ 0 1 − t8
(b) Montrer la formule de Bailey-Borwein-Plouffe :
N    n
X 4 2 1 1 1
− − − = π.
n=0
8n + 1 8n + 4 8n + 5 8n + 6 16

19. Tableau récapitulatif des fonctions utiles en Analyse


19. Tableau récapitulatif des fonctions utiles en Analyse 85

Programmation avec Sage

François DE M ARÇAY
Département de Mathématiques d’Orsay
Université Paris-Sud, France

1. S YNTAXE GÉNÉRALE

1.1. Plusieurs instructions par ligne :. Utiliser un point-virgule :

sage: 1+1; 2+2;


2
4

1.2. Commenter une ligne sans qu’elle soit lue par Sage :. Utiliser le caractère
croisillon « # » :

sage: 2*3; 3*4; 4*5 # Trois résultats sont attendus


6
12
20

1.3. Effectuer plusieurs retours à la ligne avant d’exécuter une commande :.


Utiliser le caractère « \ » :

sage: 123 + \
....: 345
468

1.4. Supprimer l’affectation d’une variable :.

sage: del x

1.5. Ré-initialiser l’ensemble des variables :.

sage: reset()

1.6. Substituer, Permuter :. Méthode économique :


86 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

sage: (a, b) = (b, a)

• Exemple :

• Méthode équivalente, standard : Employer une variable auxiliaire dotée d’un


autre nom :

sage: auxiliaire = a; a = b; b = auxiliaire

1.7. Tester (comparer) l’égalité entre deux objets :. Utiliser le signe égal double
« == »

sage: 2+2 == 2^2, 3*3 = 3^3


(True, False)

1.8. Affecter une valeur à une variable :. Utiliser le signe égal simple « = »

sage: y = 3; y = 3*y + 1; y = 3*y + 1; y


31

• Explication : La partie à droite du symbole « = » est d’abord évaluée, puis sa va-


leur est mémorisée dans la variable dont le nom est à gauche.
1.9. Tableau de syntaxe générale :.

1.10. Caractères spéciaux :.


19. Tableau récapitulatif des fonctions utiles en Analyse 87

1.11. Deux symboles équivalents pour écrire « différent » :.


2!= 1 et 2 <> 1.

1.12. Parenthèses :.
• Nécessaires pour évaluer une fonction :

sage: cos(pi)

• Nécessaire pour oublier :

sage: forget()

• Nécessaire pour ré-initialiser l’ensemble des variables :

sage: reset()

• Facultatif pour la commande print :

sage: print(25)
25
sage: print 32
32
88 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

2. A LGORITHMIQUE ET I NDENTATION

2.1. Programmation :. La programmation structurée écrit des programme infor-


matiques, qui consistent en une collection finie d’instructions effectuées les unes
à la suite des autres.
Ces instructions peuvent être élémentaires ou composées.
• Une instruction élémentaire est par exemple l’affectation d’une valeur à une
variable, ou l’affichage d’un résultat.
• Une instruction composée et construite à partir de plusieurs instructions qui
peuvent elles-mêmes être simples ou composées.
2.2. Indentation :. Avec Sage, il importe au plus haut point de structurer rigou-
reusement l’indentation 1, parce qu’elle possède une signification pour la ma-
chine, comme cela se voit dans les boucles.

3. B OUCLES

3.1. Boucles d’énumération..


• Illustration de l’importance de l’indentation par deux exemples :

• Les calculs correspondants diffèrent :



S = 2 0 + 1 + 2 + 3 = 12 S = 2 (3 + 2 (2 + 2 (0 + 1))) = 22.

3.2. Importance cruciale des « : ». Les deux points « : » à la fin de la première ligne
qui introduit un bloc d’instructions annoncent le bloc, et sont d’une importance
cruciale pour le langage de Sage.
1. En informatique, l’indentation désigne la disposition particulière du texte d’un programme
faisant apparaître des décalages de la marge dans l’écriture des divers blocs, les diverses lon-
gueurs étant rigoureusement les mêmes pour chaque bloc.
19. Tableau récapitulatif des fonctions utiles en Analyse 89

3.3. Boucles « tant que ».. Voici un exemple très typique de l’utilisation de la
boucle « tant que » :

sage: x = 10^4; u = 1; n = 0
sage: while u <= x:
n = n+1
u = 2*u
sage: n
14

• Voici un autre, plus subtil, d’utilisation de la boucle « tant que » : calculer la


somme des carrés :
Sn = 12 + 22 + 32 + · · · + n2
tant que l’exponentielle de n :
en < 106
reste inférieure à un million, ce qui s’arrête à n = 13, puisque :
e13 ≈ 442 413 < 106 < e14 ≈ 1 202 604,
et donc on doit obtenir :
13(13 + 1)
12 + 22 + · · · + 132 =
2
= 819

3.4. Boucles « for » et suites.. Encore un autre exemple, concernant l’itération de


la suite défine par u0 := 1 et :
1
un+1 = .
1 + u2n
90 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

3.5. Approche numérique et approche formelle.. Soit à calculer :


Xn
Sn = (2 k) (2 k + 1)
k=1
= 2 · 3 + 4 · 5 + · · · + (2 n) · (2 n + 1),
ce qui peut aussi se formuler sous forme d’une suite, en partant de S0 = 0 :
Sn = Sn−1 + (2 n) · (2 n + 1).
Une première approche consiste à calculer ces sommes itérativement pour une
valeur fixée concrète de l’entier n :

• Mais si l’on souhaite une expression close valable pout tout entier n, il faut pro-
céder différemment :

4. T ESTS

4.1. Structure générale :.

4.2. Exemple :.
19. Tableau récapitulatif des fonctions utiles en Analyse 91

À ce jour, on ignore si, pour tout choix de u0 ∈ N∗ , la suite converge toujours


vers le cycle :

1 7−→ 2 7−→ 4 7−→ 1 7−→ · · · ,

mais les ordinateurs sont suffisamment simplets pour tester la conjecture en par-
tant de n’importe quel u0 fini concret, par exemple en partant de u0 = 6.

sage: u = 6; n = 0
sage: while u != 1: # test "différent de", symbole alternati
....: if u % 2 == 0 # reste de la division euclidienne
....: u = u//2 # quotient de la division euclidienne
....: else:
....: u = 3*u+1
....: n = n+1
sage: n
8

4.3. Utilisation d’un « print-espion » :.

sage: u = 6; n = 0
sage: while u != 1:
....: if u % 2 == 0
....: u = u//2
....: else:
....: u = 3*u+1
....: n = n+1
....: print u, n
sage: n
8

4.4. Imbrication des boucles « if . . .else . . .if . . .else » :.


92 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

5. P ROCÉDURES ET FONCTIONS

sage: def fonction(x,y):


....: return x^2 + y^2
sage: a = var(’a’)
sage: fonction(a,2*a)
5*a^2
1. Limitations physiques 93

Grands nombres premiers


Cryptographie RSA

François DE M ARÇAY
Département de Mathématiques d’Orsay
Université Paris-Sud, France

1. Limitations physiques
Soit un nombre donné quelconque n > 1, représenté par exemple en base 10
comme suite finie de chiffres appartenant à {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.

Le Crible d’Eratosthène est la méthode la plus simple et la plus directe pour dé-
terminer si un tel nombre entier n donné est un nombre premier, ou un nombre
composé.

L’algorithme procède par élimination : il s’agit de supprimer de la table com-


plète de tous les entiers allant de 2 jusqu’à n tous les entiers qui sont multiples
d’un entier inférieur à n. À la fin il ne restera donc que les entiers qui ne sont mul-
tiples d’aucun entier, c’est-à-dire, il ne restera plus que les nombres premiers.
On commence tout simplement par rayer tous les multiples de 2, puis tous les
multiples de 3, puis tous les multiples de 5, puis tous les multiples de 7, et ainsi
de suite, jusqu’aux multiples du dernier entier premier k tel que k 2 6 n.
94 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France


On peut en effet s’arrêter à k ≈ n, car tous les entiers non premiers ont déjà
été rayés précédemment !

Cependant, ce procédé direct est limité dans la pratique à cause du très grand
nombre d’opérations qu’il exige.

In a very real sense, there are no large numbers : Any explicit integer can be said to be
‘small’. Indeed, no matter how many digits or towers of exponents you may write down, there are
only finitely many natural numbers smaller than your candidate, and finitely many that are larger.
Though condemned always to deal with small numbers, we can at least strive to handle numbers
that are larger than those that could be handled before. Richard Crandall, Carl Pomerance

Affirmation de philosophie des mathématiques. L’ensemble complet de tous les


nombres premiers n’est pas connaissable comme totalité donnée de manière ac-
tuelle, c’est-à-dire de manière accessible, effective, concrète, visible, « vraiment
présente ». 

La raison métaphysique simplette de cette limitation est claire : l’infini actuel


n’existe pas.

Afin de mieux comprendre en quoi il y a réellement limitation, spéculons


quelque peu.

Supposons par exemple que l’on rêve d’imprimer la liste complète de tous les
nombres entiers premiers qui sont inférieurs à un certain entier nombre assez
grand, disons pour se satisfaire de possèder un petit « trésor mathématique ». Va-
t-on y parvenir ?

Définition ∗∗. Pour x > 1 entier, on note classiquement π(x) le nombre d’entiers
premiers inférieurs à x :

π(x) := Card p ∈ P premiers avec p 6 x .




On connaît la valeur exacte de π(x) pour des x contenant une vingtaine de


chiffres en base 10.
1. Limitations physiques 95

Prenons par exemple x = 1020 . Il se trouve qu’à notre époque, on connaît la


valeur exacte :
π 1020 = 2 220 819 602 560 918 840


≈ 2 · 1018 .
De tels nombres n’ont « qu’une vingtaine de chiffres », ils peuvent donc sembler
« petits » — mais attention aux illusions !
Question ∗∗. Si on connaît la valeur exacte de π(1020 ), cela semble vouloir dire
que l’on connaît effectivement tous les nombres premiers p 6 1020 , mais cela
est-il bien vrai ?
En fait, non ! Même si chacun de ces ≈ 2 · 1018 nombres pouvait être représenté
par un seul caractère d’imprimerie ou un seul bit informatique, nous affirmons
qu’il serait néanmoins totalement impossible de les voir tous, ou de les stocker
tous dans des ordinateurs.
En effet, considérons par analogie le nombre record de décimales du nombre
d’Archimède :
π = 3, 141592653589793238462643383279502884279169399375 · · ·,
qui, depuis octobre 2011, va jusqu’à 10 000 milliards, ce qui nous fait donc :
1013
décimales, c’est-à-dire 1013 caractères d’imprimerie, ou bits sur un ordinateur, un
nombre vraiment inférieur à 2 · 1018 . Mais même ce nombre se situe à la limite du
visible.
Question ∗∗. Combien de livres de 500 pages comportant 40 lignes chacune avec
80 caractères seraient nécessaires pour montrer à l’humanité éclairée les 1013 dé-
cimales connues du nombre π ?
Dans un seul livre, on peut imprimer :
500 × 80 × 40 = 1 600 000
96 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

décimales, et donc il faudrait environ :


10 000 000 000 000
= 6 250 000,
1 600 000
livres, environ la moitié des quatorze millions de livres que possède et conserve
la Bibliothèque Nationale de France.
Pour faire voir les ≈ 2 · 1018 nombres premiers inférieurs à 1020 , il faudrait alors
au moins :
1018−13 = 100 000
bibliothèques de cette taille de par le monde. En poussant jusqu’à 5 chiffres de
plus :
Conclusion ∗∗. Pour des raisons purement physiques, on ne pourra jamais « voir »
tous les nombres premiers ayant un nombre de chiffres 6 25 en base 10. 

Rien n’est logique et rien ne semble absurde comme l’océan. Cette dispersion de soi-même
est inhérente à sa souveraineté et est un des éléments de son ampleur. Victor Hugo

Ainsi dans cette immensité, se noie ma pensée : et le naufrage m’est doux dans cette mer.
Leopardi

Le paradoxe contre-paradoxal 1, c’est que les théoriciens des nombres réus-


sissent quand même à capturer et à manipuler quelques gros poissons nombres
premiers ayant jusqu’à 100, 200, 300 chiffres ! Les mathématiques évoluent alors
comme dans une mer immense de nombres gigantesques, en connaissant très
peu de nombres premiers parmi ceux qui comportent jusqu’à des dizaines de
millions de chiffres en base 10.
Question ∗∗. Comment engendrer des nombres premiers qui possèdent un très
grand nombre de chiffres ?

2. Grands nombres premiers : pêche à la ligne


Fermat avait proposé, nous l’avons vu, une formule simple qui lui semblait
produire des nombres premiers de plus en plus grands. Le hic, avec ces nombres
de Fermat :
n
Fn := 22 + 1,
c’est qu’ils ne sont presque jamais premiers, en tout cas, pour ce qui est de ceux
que nous connaissons actuellement.
En 1732, Euler a découvert la factorisation :
F5 = 4294967297
= 641 · 6700417.
En 1882, Landry a montré que le nombre de Fermat suivant est aussi composé :
6
F6 = 22 + 1
= 18446744073709551617
= 274177 · 67280421310721.

1. Ce n’est parce qu’on ne peut pas tout connaître qu’il est impossible de connaître un tout
petit peu d’un trop grand tout.
2. Grands nombres premiers : pêche à la ligne 97

No prime Fn has ever been found beyond F4 , so Fermat’s conjecture has not proved a very
happy one. G.H. Hardy, E.M. Wright

Aux alentours de l’année 2005, l’état des connaissances concernant les


nombres de Fermat jusqu’à F24 est résumé au moyen du tableau suivant.

Dans ce tableau, tous les nombres explicitement écrits sont des nombres pre-
miers, et la lettre « P » désigne un grand facteur entier dont on a démontré qu’il
est premier, tandis que la lettre « C » désigne un très grand facteur composé, dont
on ne connaît pas nécessairement les facteurs premiers.
Néanmoins, comme les mathématiques savent produire un très grand
nombre de formules très compliquées, on peut toujours espérer qu’une modi-
fication de la formule de Fermat pourrait engendrer une collection infinie de
nombres premiers.
Question ∗∗. Existe-t-il une formule générale simple F (k) dépendant d’un entier
k > 1 dont toutes les valeurs :
F (1) = 2, F (2) = 3, F (3) = 5, F (4) = 7, F (5) = 11, ......,
décrivent exactement la suite des nombres premiers ?
Aucune telle formule magique n’est connue sur Terre, et il est très probable
qu’il n’en existe pas non plus sur les autres planètes habitées de l’Univers.
On peut alors abaisser les ambitions d’un cran.
Question ∗∗. Existe-t-il une formule générale simple G (k) dépendant d’un entier
k > 1 dont les valeurs contiennent au moins une infinité de nombres premiers ?
(Sans demander, toutefois, que toutes les valeurs G (1), G (2), G (3), . . ., soient des
nombres premiers.)
98 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Par exemple, la formule :


G (k) := k 2 − k + 41
ne produit que des valeurs entières premières pour :
0 6 k 6 40,
à savoir les valeurs :
41, 41, 43, 47, 53, 61, 71, 83, 97, 113, 131,
151, 173, 197, 223, 251, 281, 313, 347, 383, 421,
461, 503, 547, 593, 641, 691, 743, 797, 853, 911,
971, 1033, 1097, 1163, 1231, 1301, 1373, 1447, 1523, 1601,
mais à partir de k = 41, ces nombres cessent d’être toujours premiers :
41 · 41, 41 · 43, 1847, 1933, 43 · 47, 2111, 2203, 2297, 2393, 47 · 53,
quoiqu’il y en ait toujours pas mal qui soient premiers.
Problème mathématique ouvert. Existe-t-il une infinité de nombre premiers
dans la suite : ∞
k 2 + 1 k=1 ?
ou encore dans la suite : ∞
k 2 − k + 41 k=1 ?
De même, on constate à la main ou sur un ordinateur que la suite :
∞
k 2 − 79 k + 1601 k=1
ne prend que des valeurs entières premières pour :
0 6 k 6 79,
mais pour k = 80 on a :
802 − 79 · 80 + 1601 = 41 · 41.
Il n’est en fait pas difficile de constater que ce phénomène est général.
Théorème ∗∗. Aucun polynôme non constant à coefficients entiers :
G (x) ∈ Z[x]
ne peut prendre une suite complète de valeurs :
∞
G (k) k=K
qui sont toutes des nombres premiers pour k > K  1 assez grand.
Démonstration. Quitte à remplacer G par − G , on peut supposer que le coeffi-
cient de tête de G est positif :
G (x) = g0 xd + · · · + gd−1 x + gd (d = deg G , g0 > 0),

de telle sorte que G (k) tend vers +∞ lorsque k → ∞.


Ainsi, en un entier k assez grand, la valeur du polynôme :
G (k) = a0 k d + · · · + ad−1 k + gd
=: `
2. Grands nombres premiers : pêche à la ligne 99

est certainement > 2. L’astuce élémentaire, pour conclure, consiste alors à ob-
server, grâce la formule du binôme de Newton (exercice), que pour tout entier
λ>1: d
G λ ` + k = g0 λ ` + k + · · · + gd−1 λ ` + k + gd
 

= G (k) + multiple de `
= multiple de `
= nombre non premier,
ce qui montre que G ne prend pas de valeurs entières premières sur la suite infinie
(λ ` + k)∞
λ=1 . 
L’énoncé suivant, dont la démonstration peut faire l’objet d’un mémoire de
Master 1 à l’université, utilise de magnifiques outils d’Analyse Complexe.
Théorème ∗∗. [Dirichlet] Pour tout couple d’entiers a, b > 1 premiers entre eux :
a ∧ b = 1,
la suite des valeurs : ∞
a + bk k=1
contient une infinité de nombres premiers. 
Pour formuler un énoncé plus fin, rappelons que le Théorème des nombres
premiers stipule que la fonction :
π(x) := Card 2 6 p 6 x : p ∈ P est premier


se comporte asymptotiquement comme :


x
π(x) ∼ .
log x
Théorème ∗∗. [Dirichlet affiné] Pour tout couple d’entiers a, b > 1 premiers entre
eux, dans la progression arithmétique infinie :
a, a + 2 b, a + 3 b, a + 4 b, a + 5 b, ......,
le nombre de nombres qui sont premiers :
π x; a, b := Card k ∈ N avec a + bk 6 x tels que a + b k ∈ P
 

est asymptotiquement égal à :


 1
π x; a, b ∼ π(x)
ϕ(b)
1 x
∼ ,
ϕ(b) log x
où ϕ(b) = Card {1 6 b0 6 b : b0 ∧ b = 1} est l’indicateur d’Euler. 
En tout cas, que ce soit au moyen de formules linéaires k 7−→ a k+b ou, conjec-
turalement, au moyen de formules quadratiques telles que k 7−→ k 2 + 1, même
s’il elles produisent une infinité de nombres premiers, il reste en général diffi-
cile, comme le dit l’Ancien Testament, de séparer le bon grain de l’ivraie, à savoir
il reste difficile de déterminer si une valeur G (k) est un nombre premier ou un
nombre composé.
100 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Mais revenons à notre Question ∗∗ qui demandait comment produire de


grands nombres premiers. Il est clair qu’il vaut mieux utiliser des formules ex-
ponentielles, car les polynômes croissent moins vite que les exponentielles.
Il est intéressant de comparer le destin des nombres de Fermat à celui d’une
autre conjecture célèbre, qui concerne les nombres premiers de la forme :
2n − 1.
Théorème ∗∗. Si, pour un entier n > 2, le nombre :
an − 1
est premier, alors a = 2 et n lui-même est premier.
Démonstration. En effet, si a > 3, alors on a la factorisation :
an − 1 = (a − 1) an−1 + · · · + a + 1 .


Donc on a a = 2 nécessairement.
Ensuite, si n = k l est composé, on peut à nouveau constater (exercice) que
2 − 1 et 2l − 1 divisent 2n − 1.
k

Définition ∗∗. Un nombre de Mersenne 2 est un nombre premier qui s’écrit sous
la forme :
Mp := 2p − 1,
avec p lui-même entier premier.

En 1644, Mersenne affirmait que Mp est premier pour les valeurs :


p = 2, 3, 5, 7, 13, 17, 19, 31, 67, 127, 257,
et que Mp est composé pour les 44 autres valeurs de p premier inférieures à 257.
La première erreur 3 dans la liste de Mersenne n’a été trouvée qu’en 1886,
lorsque Pervusin et Seelhoff découvrirent que M61 est en fait premier. Par la suite,
d’autres erreurs furent trouvées, et la liste de Mersenne commença à ne plus être
prise au sérieux.
En 1876, Lucas mis au point une méthode pour tester si Mp est premier, mé-
thode qu’il utilisa pour montrer que M127 est premier.

2. Marin Mersenne, religieux érudit et mathématicien français du XVIIème siècle.


3. En 1732, Euler affirmait que M41 et M47 sont premiers, ce qui n’était pas vrai (et n’est tou-
jours pas vrai aujourd’hui).
3. Principe de la crytographie RSA 101

Entre 1876 et 1951, c’est-à-dire pendant trois-quarts de siècle, le nombre de Lu-


cas :
2127 − 1 = 170141183460469231731687303715884105727
demeura le plus grand nombre premier connu.
En 2005, tous les nombres premiers de Mersenne connus étaient ceux qui ap-
paraissent dans le tableau suivant.

Les prochains sont les suivants :


M30402457 = 230402457 − 1,
M32582657 = 232582657 − 1,
M37156667 = 237156667 − 1,
M42643801 = 242643801 − 1,
M43112609 = 243112609 − 1,
M57885161 = 257885161 − 1,
ce qui veut dire que tous les Mp intercalés qui n’apparaissent pas sont composés.
Le dernier, découvert en janvier 2013 :
257885161 − 1,
est composé de plus de 17 millions de chiffres en base 10, et son écriture complète
remplirait une bonne dizaine de livres de 500 pages environ.
À titre de comparaison, il faut moins de 100 chiffres pour effectuer le décompte
du nombre de particules (neutrons, protons et électrons) contenues dans tout
l’univers !
Après tous ces préliminaires qui se sont étendus en longueur, il est temps,
maintenant, d’entrer dans le vif du sujet.

3. Principe de la crytographie RSA

Our ability to uncover large primes and prove them prime has outstripped our ability to factor,
a situation that gives tome comfort to cryptographers. Richard Crandall, Carl Pomerance
102 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

Le scénario est le suivant. Bernard 4 souhaite envoyer secrètement un message


à sa dulcinée, Alice.
En effet, il est hors de question que des oreilles indiscrètes interceptent ce qui
transite dans les canaux de leur communication intime.
L’idée la plus simple, qui remonte à l’Antiquité, consiste à coder, ou à chiffrer,
le message, c’est-à-dire à le rendre illisible par toute autre tierce personne.

Le code de Cæsar — Julius, qui écrivait à Cléopâtre — permute simplement


toutes les lettres de l’alphabet :
a 7−→ d, b 7−→ e, c 7−→ f, ......, y 7−→ b, z 7−→ c.
Par exemple, Cæsar signera sa lettre enflammée par :
F dhvdu.

Malheureusement, ce cryptosystème est trivialement facile à casser : il y a


seulement 26 possibilités à tester, et une fois que la correspondance pour une
seule lettre a été trouvée, toutes les autres s’ensuivent car la permutation est cir-
culaire.
4. Dans la langue anglo-saxonne, Bernard est appelé Bob.
3. Principe de la crytographie RSA 103

Plus astucieusement, on pourrait utiliser l’une des :


26! ≈ 4 · 1026
permutations de l’alphabet à 26 lettres. Dans un tel cryptosystème qui demeure
encore assez primitif, casser le code, cela consiste à reconstituer la permutation.
Mais si l’on sait dans quel langage le message est codé, une simple anayse de
fréquence des lettres qui apparaissent permet assez rapidement de reconstituer
la totalité du message.
Exeunt, donc les codes trop antiques de Julius Cæsar et Cléôpatre, place à la
science high-tech d’Alice et de Bernard !
La seule méthode de codage dont on démontre qu’elle est entièrement sécu-
risée, au sens de l’informatique théorique, est la suivante.
Soit ν > 1 le nombre de lettres du message à transmettre, par exemple, le
message « ECUREUIL» réduit pour simplifier à un seul mot. On choisit une autre
séquence auxiliaire de ν lettres produites au hasard, par exemple la séquence
« DFTXMQIB ». On effectue la correspondence la plus simple entre les 26 lettres
de l’alphabet et les nombres de 0 à 25 :
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

On place le message à transmettre ainsi que son compagnon aléatoire l’un au-
dessus de l’autre :
4 2 20 17 4 20 8 11
E C U R E U I L
D F T X M Q I B
3 5 19 23 12 16 8 1

On effectue l’addition modulo 26 de leurs chiffres respectifs, et on retranscrit le


résultat en lettres :
7 7 14 15 11 16 18 12
H H O P L Q S M
ce qui est le code du message d’origine.
C’est le seul procédé de codage qui soit démontrablement incassable.
Mais il présente quelques inconvénients. Premièrement, les clés doivent avoir
la même longueur que les messages. Deuxièmement, il est préférable de ne pas
ré-utiliser plusieurs fois des parties d’une même séquence aléatoire de lettres.
Le système de cryptographie le plus répandu et qui a supplanté tous ses
concurrents est le système dit RSA — voir la Section 5 infra pour des informa-
tions historiques —, et il est basé sur l’utilisation de grands nombres premiers,
le plus complexe des mystères mathématiques.
L’idée profonde est que la personne, Alice, qui souhaite recevoir un message
secret de Bernard (de la CIA), prépare à l’avance chez elle (à la Maison Blanche)
certaines données qui lui permettront à elle seule de comprendre les messages
que Bernard aura envoyés. Alice se prépare, en secret, à devenir la seule per-
sonne au monde qui pourra comprendre ce que voudra lui dire Bernard !
Si on admet temporairement que le message de Bernard peut être découpé
en blocs de caractères d’imprimerie ayant des longueurs approximativement
104 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

égales, chaque morceau correspondant d’une certaine manière à un nombre,


le problème reviendra alors à envoyer secrètement une suite de nombres en-
tiers, écrits en base 10, de tailles approximativement égales. Dans la Section 4,
nous justifierons un tel codage préliminaire, qui transforme des blocs de carac-
tères d’imprimerie en une suite de nombres entiers.

Algorithme: Cryptographie RSA


 Un bloc du message de Bernard est représenté par un nombre m ∈ N de taille
raisonnable.
 Alice, qui est cryptographe professionnelle, choisit dans sa collection per-
sonnelle deux très grands nombres premiers, soient :
p et q,
comportant tous deux environ 300 chiffres en base 10. Lorsque soit p, soit q est
trop petit, le protocole a des risques d’être attaqué.
 Alice multiplie ces deux nombres, ce qui est très facile, et elle obtient le
nombre :
n := p q,
qui comporte environ 600 chiffres.
 Alice rend public ce nombre n, mais elle conserve secrètement chez elle les
deux précieux facteurs premiers p et q. Autrement dit, Bernard, qui fait partie
du public d’Alice, peut prendre connaissance du nombre n, par exemple sur
internet, et le monde entier, d’ailleurs, peut aussi prendre connaissance de n.
L’intérêt fantastique du protocole RSA, c’est que Bernard n’aura aucunement
besoin de connaître les secrets d’Alice pour pouvoir lui écrire sans que personne
n’y comprenne rien. Autrement dit, aucun secret ne transitera dans les canaux
de communication, tel est le génie du RSA !
Le secret reste intérieur !
 Sur le plan pratique, la sécurité du protocole RSA tient au fait qu’il est dé-
montrablement extrêmement difficile de factoriser, même avec un réseau d’or-
dinateurs superpuissants, des nombres entiers à environ 600 chiffres. Donc
tout le monde a beau connaître n, personne n’est assez fort pour retrouver les
deux facteurs premiers p et q, à moins d’y passer des milliards de milliards d’an-
nées.
3. Principe de la crytographie RSA 105

 Ensuite, Alice considère le groupe multiplicatif des éléments inversibles :


 ×
Z (p − 1)(q − 1)Z ,
et en appliquant des recherches aléatoires automatiques répétées, elle finit par
trouver un élément inversible :
 ×
d ∈ Z (p − 1)(q − 1)Z ,
dont la taille soit assez grande pour que le protocole ne puisse pas être cassé.
 Alice détermine alors l’unique inverse e de d dans ce groupe, qui satisfait
donc :
d e ≡ 1 mod (p − 1)(q − 1).
 Enfin, Alice rend aussi public cet inverse e, et alors, ce qu’on appelle la clé
publique d’Alice, visible par tout le monde dans le monde entier, est le couple :
(n, e),
que Bernard se hâte de noter sur ses ordinateurs.
 Tout est maintenant prêt pour que Bernard se décide enfin à coder puis à
envoyer son message, qui est un nombre m ∈ N, car . . . Alice est prête !
 C’est très simple : en utilisant l’Algorithme (très efficace !) d’exponentiation
modulaire, Bernard prend son entier m et lui fait subir :
m 7−→ me mod n,
ce qu’il peut effectivement faire, puisqu’il connaît n et e. De la sorte, le message
initial signifiant m est remplacé par un message me mod n dans lequel un très
grand désordre numérique a été introduit.
 Bernard envoie alors à Alice ce message illisible me mod n, que le KGB n’es-
saie même plus d’intercepter sur internet.
 Mais comment Alice va-t-elle réussir à déchiffer cela ?
 C’est très simple, Alice fait subir à me une nouvelle exponentiation modu-
laire :
d
me mod n 7−→ me mod n
= m mod n,
et la Proposition ∗∗ ci-dessous stipule que Alice retrouvera bien m.
106 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

 Afin d’assurer qu’il n’y ait aucune ambiguïté dans la reconstitution de m à


travers le module n, il suffit que Bernard s’arrange à l’avance pour découper
son message en blocs codés par des entiers m qui soient tous 6 n − 1.

Proposition ∗∗. Étant donné deux nombres entiers premiers p, q ∈ P, et étant


donné un élément inversible :
 ×
d ∈ Z (p − 1)(q − 1)Z
d’inverse e :
1 ≡ d e mod (p − 1)(q − 1),
pour tout entier m ∈ Z, on a toujours :
d
me mod p q ≡ m mod p q.
Démonstration. Par hypothèse, il existe un entier k ∈ Z tel que :
e d = 1 + k (p − 1)(q − 1).
Assertion ∗∗. On a :
me d ≡ m mod p.
Preuve. Deux cas sont à considérer. Premièrement, lorsque p divise m, on gagne
facilement :
me d ≡ 0 mod p
≡ m mod p.
Deuxièmement, lorsque p ne divise pas m, d’où pgcd(p, m) = 1, le petit Théo-
rème de Fermat donne :
mp−1 ≡ 1 mod p,
d’où :
me d = m · mk (p−1) (q−1)
≡ m · 1 mod p
et là encore, on a gagné. 
Par symétrie, on obtient aussi :
me d ≡ m mod q.
Autrement dit, me d − m est multiple de p et est multiple de q, et comme p et q sont
premiers, c’est que me d − m doit être (exercice mental) multiple de leur produit
p q, ce qui conclut. 
Le système RSA est dit à clé publique, ce qui signifie que :
 ni l’algorithme de calcul ni la clé de codage ne sont cachés ;
 la connaissance de la clé publique d’Alice permet à tous ses interlocuteurs
potentiels : Bernard, Gustave, Gédéon, Prosper, Léopold, de crypter les messages
qu’ils lui destinent, mais seule Alice peut décrypter les messages qu’elle reçoit,
grâce à sa clé de décodage privée, qu’elle cache soigneusement.
Les clés publiques peuvent être publiées dans un annuaire ou sont obtenues,
à la demande, en contactant préalablement celui à qui l’on veut faire parvenir un
message.
4. Codages préliminaires 107

Ce type de système possédant une clé de décodage différente de la clé de co-


dage (le système est dissymétrique) présente un avantage sur les systèmes clas-
siques (dits symétriques, car une seule et même clé sert à la fois au codage et
au décodage) : avant un échange, les deux interlocuteurs n’ont pas besoin de se
rencontrer pour convenir d’une clé secrète, qui devra rester connue d’eux seuls,
ni n’ont besoin de faire circuler — sur un réseau informatique ou autre — une
clé secrète, transmission qui bien sûr engendre un risque. Seule la clé publique,
insuffisante pour le décryptage, est connue préalablement aux échanges cryptés
entre les deux interlocuteurs.
Pour terminer cette section, posons-nous la :
Question ∗∗. Combien de temps faudrait-il pour factoriser un entier n à 600
chiffres en base 10 en appliquant l’algorithme naïf d’Eratosthène ?

Il s’agit de supprimer tous les multiples de nombres premiers p 6 10600 =
10300 . Le nombre de nombre premiers inférieurs à 10300 est approximativement
égal à :
10300
≈ 1, 5 · 10297 .
log 10300
Un processeur ayant une forte puissance de 10 Ghz (optimiste) fait environ
10
10 opérations à la seconde.
Supposons sans sourciller qu’il y ait 1011 tels processeurs de part le monde (ce
qui ferait 10 processeurs par être humain !).
On obtiendrait une puissance de calcul de 1021 opérations à la seconde.
Puisqu’il y a 60 · 60 · 24 · 365 ≈ 3 · 107 secondes dans une année, cela ferait au
mieux 3 · 1028 opérations par an.
En supposant (fort abusivement !) qu’il n’y ait qu’une seule opération à effec-
tuer par nombre premier dans le crible d’Eratosthène, il faudrait donc un nombre
d’années égal à environ :
1.5 · 10297
≈ 5 · 10268 ,
3 · 1028
ce qui est insensé !

4. Codages préliminaires
Le texte de Bernard est certainement trop long pour être codé d’un seul tenant
comme un unique nombre m ∈ Z.
Je regrette les temps de la grande Cybèle
Qu’on disait parcourir, gigantesquement belle,
Sur un grand char d’airain, les splendides cités ;
Son double sein versait dans les immensités
Le pur ruissellement de la vie infinie,
L’Homme suçait, heureux, sa mamelle bénie,
Comme un petit enfant, jouant sur ses genoux.
Parce qu’il était fort, l’Homme était chaste et doux. Rimbaud
Il faut donc le découper en blocs de caractères d’imprimerie ayant tous une
longueur raisonnable approximativement équilibrée, par exemple ici, vers par
vers :
108 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

 
Je regrette les temps de la grande Cybèle
 
Qu’on disait parcourir, gigantesquement belle,
 
Sur un grand char d’airain, les splendides cités ;
 
Son double sein versait dans les immensités
 
Le pur ruissellement de la vie infinie,
 
L’Homme suçait, heureux, sa mamelle bénie,
 
Comme un petit enfant, jouant sur ses genoux.
 
Parce qu’il était fort, l’Homme était chaste et doux. Rimbaud

Pour simplifier, nous supposerons que les caractères d’imprimerie que Ber-
nard utilise se réduisent aux lettres standard de l’alphabet :
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

avec aussi un espace blanc :


L
26

ainsi que les lettres majuscules :


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52

et nous supposerons que Bernard pré-code ces caractères de 0 à 52. Dans la vraie
vie de la poésie, on doit coder avec une centaine de caractères. Dans la vraie vie
des mathématiques, plusieurs centaines sont nécessaires.
Soit alors une portion quelconque du texte de Bernard qui comporte un
nombre ν > 1 de caractères :
`0 `1 . . . `ν−1 ,
appartenant tous à cet alphabet simplifié de lettres, espace, majuscules. Le pré-
codage associe donc à cette portion une suite de ν nombres :
m0 m1 . . . mν−1
appartenant tous à {0, 1, . . . , 52}. Mais comme les ordinateurs sont en général
construits pour afficher en base 10 les calculs qu’ils font en base 2, il faut pou-
voir transcrire cela en un certain nombre :
m ∈ N,
écrit en base 10.
L’idée la plus naturelle consiste alors à faire représenter la suite des mλ par le
nombre écrit en base 53 :
m := m0 + m1 · 531 + · · · + mν−1 · 53ν−1 ,
5. RSA : historique et réflexions diverses 109

et l’ordinateur calculera alors automatiquement cette somme comme un certain


nombre écrit en base 10. La correspondance est bi-univoque (exercice mental),
et le nombre m est toujours majoré par :

m 6 52 + 52 · 53 + · · · + 52 · 53ν−1
= 52 1 + 53 + · · · + 53ν−1


53ν − 1
= 52
53 − 1
= 53ν − 1.

Rappelons enfin que pour qu’Alice retrouve l’entier m sans ambiguïté modulo
n, il est préférable que Bernard découpe son texte en blocs de caractères auxquels
correspondront des nombres :

m 6 n − 1,

ce qui revient à demander que :

53ν 6 n,

à savoir à assurer que la longueur ν des blocs de caractères d’imprimerie soit


majorée par :
log n
ν 6 ,
log 53
ce que Bernard peut fort aisément faire, puisque Alice a rendu publique sa clé n !
En résumé :

Proposition ∗∗. Pour pré-coder son message dans le langage de l’arithmétique des
nombres entiers, ayant pris connaissance de la clé publique n d’Alice, Bernard dé-
coupe son texte en blocs de caractères d’imprimerie :
  0
`0 . . . `0ν 0 −1
  00
`0 . . . `00ν 00 −1
  000
`0 . . . `000
  0000
`0 . . . `0000
 
`0 . . . `ν−1 ν 000 −1 ν 0000 −1 ......
log n
de longueurs ν, ν 0 , ν 00 , . . . toutes 6 log 53
, et il associe à chacun de ces blocs des
nombres entiers :
   0   00   000   0000 
m m m m m ......

satisfaisant tous m, m0 , m00 , · · · 6 n − 1, qui seront chacun soumis au processus


d’exponentiation RSA. 

Dans cette approche, on découpe le message en blocs et on utilise RSA sur


chaque bloc. Dans la vraie vie, il est plus usuel d’utiliser RSA pour chiffrer une
clé et d’utiliser ensuite un chiffrement à clé privée pour faire le chiffrement réel
du message. En effet, utiliser RSA sur plusieurs blocs n’est pas sûr : on peut par
exemple savoir si le même bloc est transmis plusieurs fois.
110 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

5. RSA : historique et réflexions diverses

Le système de cryptage RSA a été inventé en 1977 par Rivest, Shamir et Ad-
leman, dont les initiales forment l’acronyme RSA. Ces trois auteurs avaient dé-
cidé de travailler ensemble pour établir qu’un nouveau système de codage révo-
lutionnaire, dénommé « système à clé publique » que Diffie et Hellman venaient
d’inventer, était une impossibilité logique, autrement dit, que tout système de
cryptage de cette nature devait présenter certaines failles. Ils ne réussirent pas
dans leur projet, mais, au contraire, ils découvrirent un nouveau système à clé
publique qui supplanta rapidement celui de Diffie et Hellman.
Rappelons que la dissymétrie fondamentale qui sous-tend le protocole, est
qu’il est immédiatement facile de multiplier deux nombres premiers ayant un
grand nombre de chiffres, alors qu’il est extrêmement difficile de déterminer les
facteurs premiers d’un grand nombre donné. Si l’on s’y prend naïvement, il faut
diviser ce nombre par beaucoup de nombres plus petits et déterminer le reste :
si celui-ci est nul, on a déterminé ainsi un diviseur. Les mathématiciens ont mis
au point des moyens plus rapides que les divisions successives, mais le nombre
d’opérations à effectuer reste considérable pour des nombres de taille impor-
tante. Ainsi il est actuellement impossible de « factoriser » des nombres de plus
de 300 chiffres, même avec les ordinateurs les plus rapides et les algorithmes les
plus performants.
5. RSA : historique et réflexions diverses 111

Insistons sur le fait que le jeu numérique élémentaire du protocole RSA est
aujourd’hui un système universel servant dans une multitude d’applications. Au
cours des années, il a devancé tous ses concurrents.

Le RSA est programmé aussi dans les systèmes d’exploitation de Microsoft,


d’Apple, de Sun. Il est intégré dans les cartes Ethernet et dans certaines cartes
à puce bancaires. Un très grand nombre d’institutions gouvernementales, uni-
versitaires ou militaires, l’utilisent de façon interne. Le réseau Internet en fait un
usage systématique pour assurer la confidentialité du courrier électronique et
authentifier les utilisateurs. Bref :
le protocole RSA est partout !
Sur le plan pratique, les experts recommandaient au début des années 2000
d’utiliser des nombres n de 768 bits (232 chiffres décimaux) pour mettre en œuvre
le RSA dans le cas de données pas trop importantes, mais ils conseillaient 1 024
bits (309 chiffres décimaux) pour un usage commercial et 2 048 bits (617 chiffres
décimaux) pour avoir une garantie se prolongeant sur une longue période de
112 François DE M ARÇAY, Département de Mathématiques d’Orsay, Université Paris-Saclay, France

temps. Les clés de 512 bits (155 chiffres décimaux), encore utilisées, ne devraient
plus l’être, car on a réussi, en août 1999, à factoriser un nombre n (produit de
deux grands nombres premiers) de 512 bits.
La confiance dans la sécurité du RSA n’est pas due à la démonstration
théorique que ce système est sûr, car une telle démonstration n’existe pas. La
confiance affichée provient de l’échec, répété depuis plus de 30 ans, de toutes les
tentatives entreprises pour casser ce système, tentatives qui n’ont conduit qu’à
la formulation de quelques recommandations pour le choix des paramètres p, q,
e, d.
Sur le plan théorique, la situation est décevante et le restera certainement
longtemps. Celui qui sait factoriser n = p q retrouve ensuite facilement d. Inver-
sement, les mathématiques montrent que celui qui connaît n, e et d peut trouver
rapidement p et q. La robustesse du RSA apparaît donc liée à la difficulté de la
factorisation. Malheureusement, il n’est pas exclu que quelqu’un, sans réussir à
obtenir d ni p ni q, puisse décrypter un message : autrement dit, il n’a pas été
prouvé que la difficulté du RSA est équivalente à celle de la factorisation.
Deux attaques théoriques du RSA sont donc envisageables. Celle passant par
la factorisation : quiconque sait factoriser les nombres de la taille de n = p q sait
lire comme à livre ouvert tous les messages cryptés par le RSA. Celle contournant
la factorisation, dont personne n’a su établir qu’elle était impossible et pour la-
quelle, au contraire, on a proposé récemment des arguments indiquant qu’elle
devait être sérieusement crainte. Boneh et Venkatesan ont en effet établi en 1998
que casser le RSA, lorsqu’il est utilisé avec des exposants e trop petits, n’est pas
équivalent à factoriser n.
—————–

Vous aimerez peut-être aussi