Académique Documents
Professionnel Documents
Culture Documents
François DE M ARÇAY
Département de Mathématiques d’Orsay
Université Paris-Saclay, France
2
3
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
Algorithme d’Euclide
François DE M ARÇAY
Département de Mathématiques d’Orsay
Université Paris-Sud, France
|{z} 3 · |{z}
126 = |{z} 35 + |{z}
21 .
a q b r
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.
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
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),
• 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.
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
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 ,
et ainsi de suite.
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
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.
ri−1 = qi ri + ri+1 ,
... ... ...
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 ,
Ri := Qi · · · Q1 R0 (1 6 i 6 `).
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
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
François DE M ARÇAY
Département de Mathématiques d’Orsay
Université Paris-Sud, France
ri−1 = qi ri + ri+1 ,
... ... ...
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 .
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 ,
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◦ .
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.
1 = sa + tm.
4. Exponentiation rapide par répétition de carrés 29
= a,
b3 = a,
b2 = (b3 )2 · a = a2 · a,
2
b1 = (b2 )2 = a2 · a ,
2
2
2 2
b0 = (b1 ) · a = a · a · a,
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
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
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.
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
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
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 ,
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.
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
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
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
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,
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 .
= 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
qui sont clairement disjoints entre eux et dont la réunion est le groupe tout en-
tier : [ ×
Ed = Z pZ ,
d | p−1
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
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
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
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
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
2 6 p1 < p2 .
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,
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
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.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
sage: 20//6
3
sage: 20 % 6
2
sage: 20//6; 20 % 6
3; 2
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.3. Commenter une ligne sans qu’elle soit lue par Sage :. Utiliser le caractère
croisillon « # » :
sage: 123 + \
....: 345
468
5. Fonctions élémentaires
sage: simplify(arcos(sin(pi/3)))
(1/6)*pi
sage: simplify(exp(i*pi/6))
(1/2)*sqrt(3) + 1/2*I
6.1. Accéder directement à de l’aide sur une commande :. Placer un point d’in-
terrogation juste après la commande :
sage: sin?
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.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
sage: y = 1 + 2; y
3
sage: y = 3*y + 1; y
10
sage: a = 1
sage: bool(a==1)
True
sage: bool(a==2)
False
8. Variables symboliques
sage: var(’x’)
x
sage: 2*x+3
2*x+3
sage: var(’x’)
sage: expr = sin(x); expr
sin(x)
sage: expr(x=1)
sin(1)
ou encore :
Alternative :
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
expand
collect
factor
combine
simplify_trig
simplify_exp
simplify_factorial
10.2. Exemples :.
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.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: eq.lhs()
z^2 - 2*z/cos(phi) + 5/cos(phi)^2 - 4
sage: eq.rhs()
0
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: 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]
sage: ring=RR
sage: ring=CC
Sur le corps R :
12. Sommes 77
Sur le corps C :
12. Sommes
12.1. Somme 1 + 2 + 3 + · · · + 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
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
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
Obtenir :
14. Suites
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 .
sage: tan(4*arctan(1/5)).simplify_trig
120/119
sage: tan( pi/4 + arctan(1/239) ).simplify_trig
120/119
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
17. Dérivées
sage: diff(sin(x^2), x)
2*x*cos(x^2)
sage: diff(ln(f(x)), x)
D[0](f)(x)/f(x)
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: integrate(1/(1+x^2), x)
arctan(x)
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
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
François DE M ARÇAY
Département de Mathématiques d’Orsay
Université Paris-Sud, France
1. S YNTAXE GÉNÉRALE
1.2. Commenter une ligne sans qu’elle soit lue par Sage :. Utiliser le caractère
croisillon « # » :
sage: 123 + \
....: 345
468
sage: del x
sage: reset()
• Exemple :
1.7. Tester (comparer) l’égalité entre deux objets :. Utiliser le signe égal double
« == »
1.8. Affecter une valeur à une variable :. Utiliser le signe égal simple « = »
1.12. Parenthèses :.
• Nécessaires pour évaluer une fonction :
sage: cos(pi)
sage: forget()
sage: reset()
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
3. B OUCLES
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
• Mais si l’on souhaite une expression close valable pout tout entier n, il faut pro-
céder différemment :
4. T ESTS
4.2. Exemple :.
19. Tableau récapitulatif des fonctions utiles en Analyse 91
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
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
5. P ROCÉDURES ET FONCTIONS
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é.
√
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
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 :
≈ 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
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
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
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
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
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.
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
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
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
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
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,
53ν 6 n,
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 ......
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.
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.
—————–