Rédaction de quelques points de cours en calcul formel - IMJ-PRG

publicité
CALCUL FORMEL POUR
L’AGRÉGATION
Cours à l’Université de Rennes 1 (2008–2009)
Antoine Chambert-Loir
Antoine Chambert-Loir
IRMAR, Université de Rennes 1, Campus de Beaulieu, 35042 Rennes Cedex.
E-mail : [email protected]
Url : http://perso.univ-rennes1.fr/antoine.chambert-loir
Version du 24 mars 2009
La version la plus à jour est disponible sur le Web à l’adresse http://perso.univ-rennes.fr/
antoine.chambert-loir/2008-09/cf/
SOMMAIRE
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1. Nombres entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Représentation des entiers, 5 ; Les quatre opérations, 7.
5
2. Algorithme d’Euclide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
L’algorithme d’Euclide étendu, 11 ; Complexité de l’algorithme d’Euclide
pour les entiers, 13 ; Complexité dans le cas des polynômes, 15.
3. Nombres premiers, factorisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Nombres premiers, 17 ; Factorisation, 25.
4. Corps finis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Rappels sur les corps finis, 29 ; Polynômes à coeficients dans un corps
fini, 31 ; Extraction de racines m-ièmes, 37.
INTRODUCTION
Programme spécifique de l’option C.
a) Représentation et manipulation des entiers longs, flottants
multiprécision, nombres complexes, polynômes, éléments de
Z/nZ et des corps finis. Addition, multiplication, division, extraction de racine carrée.
b) Algorithmes algébriques élémentaires. Exponentiation (n 7→
a n , pour n ∈ N), algorithme d’Euclide étendu. Test de primalité de
Fermat.
c) Matrices à coefficients dans un corps. Méthode du pivot
de Gauss, décomposition LU. Calcul du rang, du déterminant.
Exemples de codes correcteurs linéaires : codes de répétition,
codes de Hamming binaires.
d) Matrices à coefficients entiers. Opérations élémentaires sur
les lignes et les colonnes. Application aux systèmes linéaires sur Z
et aux groupes abéliens de type fini.
e) Polynômes à une indéterminée. Évaluation (schéma de Horner), interpolation (Lagrange, différences finies). Localisation des
racines dans R ou C : majoration en fonction des coefficients.
f ) Polynômes à plusieurs indéterminées. Résultants, élimination ; intersection ensembliste de courbes et de surfaces algébriques usuelles.
g) Estimation de la complexité des algorithmes précités dans le
cas le pire. Aucune formalisation d’un modèle de calcul n’est exigée.
BIBLIOGRAPHIE
[1] E. B ACH & J. S HALLIT – Algorithmic number theory. Vol. 1, Foundations of Computing Series, MIT Press, Cambridge, MA, 1996, Efficient algorithms.
[2] J. VON ZUR G ATHEN & J. G ERHARD – Modern computer algebra, second éd., Cambridge University Press, Cambridge, 2003.
[3] C. K. YAP – Fundamental problems of algorithmic algebra, Oxford University Press,
New York, 2000.
CHAPITRE 1
NOMBRES ENTIERS
§1.1. Représentation des entiers
A. Numération
T HÉORÈME 1.1.1. — Soit b un nombre entier tel que b > 1. Pour tout entier n > 0, il
existe une unique suite (a r , . . . , a 0 ) d’entiers vérifiant 0 6 a i < b pour tout i ∈ {0, . . . , r },
a r 6= 0 et n = a r b r + a r −1 b r −1 + · · · + a 1 b + a 0 .
Cette suite s’appelle le développement en base b de l’entier n. Lorsque b = 10, cela
correspond à l’écriture usuelle, par exemple 25 = 2·10+5. On écrira ainsi n = [a r . . . a 0 ]b
pour signifier que (a r , . . . , a 0 ) est le développement en base b de l’entier n.
L’entier 0 correspond à la suite vide () ; pour cette raison, et pour se conforter à l’habitude de noter le zéro, on autorise parfois a r = 0 lorsque r = 0. Sauf dans ce cas, on a
r > 0 et le nombre de chiffres du développement de n est égal à r + 1.
La présence ou l’absence de zéros en tête du développement en base b n’est de
toutes façons qu’une convention de notation. Si le choix du mathématicien de ne pas
les inclure permet d’énoncer un théorème élégant comme celui ci-dessus ( :-)), le choix
contraire peut être utile en pratique.
Les bases les plus couramment utilisées sont b = 10 (système décimal) b = 2 (numération binaire), b = 16 (notation hexadécimale (1) ), b = 28 (du temps où l’unité de base
d’un ordinateur était l’octet), b = 264 (maintenant que les ordinateurs ont 64 bits) Mais
si l’on ne peut utiliser qu’une calculatrice « 8 chiffres » pour effectuer de gros calculs, la
base 104 s’avérera très pratique.
On peut représenter un entier relatif par sa valeur absolue et son signe.
B. Conversion d’une base à une autre
De manière générale, on calcule dans une base privilégiée (pour nous, la base 10) et
il s’agit de convertir un entiers depuis, ou vers, une base b auxiliaire.
1. « The word “hexadecimal,” which has crept into our language even more recently, is a mixture of
Greek and Latin stems ; more proper terms would be “senidenary” or “sedecimal” or even “sexadecimal,”
but the latter is perhaps too risqué for computer programmers. » ([?])
CHAPITRE 1. NOMBRES ENTIERS
6
Un certain nombre de conversions sont très faciles à faire en pratique, il s’agit de
passer d’une base b à une base qui en est une puissance, disons b k . En effet, on regroupe juste les termes k par k. Dans l’autre sens, chaque « chiffre » en base b k doit
être remplacé par son développement en base b, éventuellement complété avec des
zéros en tête pour occupper exactement k chiffres en base b.
Pour convertir depuis une autre base b, il s’agit essentiellement d’évaluer le polynôme à coefficients entiers P = a r X r + · · · + a 0 en b. Le schéma de Hörner représente
cette expression comme
P = (((a r X + a r −1 ) X + a r −2 ) + · · · + a 1 ) X + a 0
qu’on évalue de l’intérieur vers l’extérieur.
P ROPOSITION 1.1.2 (Schéma de Hörner). — On définit une suite (u r , . . . , u 0 ) par récurrence descendante en posant
ur = ar ,
u i = u i +1 b + a i pour 0 6 i < r .
Alors, u 0 = [a r . . . a 0 ]b .
Dans l’autre sens, on procède par divisions euclidiennes successives par b :
P ROPOSITION 1.1.3. — Soit n un entier naturel strictement positif. On définit des suites
(u i ) et (a i ) par récurrence en posant u 0 = n puis, si u 0 , . . . , u i sont définis et u i > 0, on
pose a i le reste de la division euclidienne de u i par b et u i +1 son quotient. Si r est le plus
grand entier tel que u r soit défini, on a alors n = [a r . . . a 0 ]b .
C. Taille des données
Discutons rapidement de la taille mémoire requise pour stocker un entier lorsqu’on
l’écrit en base b. Si n = [a r . . . a 0 ]b , on doit connaître les r + 1 entiers a 0 , . . . , a r . Dans
l’hypothèse où la structure de l’ordinateur lui permet de manipuler naturellement un
entier entre 0 et b − 1, la représentation de n occupe donc r + 1 mots. Puisque n vérifie
l’encadrement
b r 6 n 6 (b − 1)b r + · · · + (b − 1)b + (b − 1) = b r +1 − 1,
on a
r log b 6 log n < (r + 1) log b,
soit encore r = blogb nc, où l’on note logb le logarithme en base b.
Il faut retenir de cela que la taille mémoire requise par le stockage d’un entier n est
de l’ordre de log n. C’est aussi le temps requis pour le lire, ou pour l’écrire.
Il faut réfléchir cinq minutes à l’efficacité de la notation mathématique qui peut représenter avec un mot de longueur ` des objets d’une taille exponentiellement plus
grande. On estime à 1080 le nombre d’atomes dans l’univers, mais il suffirait d’une ligne
pour l’écrire en base 10.
§1.2. LES QUATRE OPÉRATIONS
7
§1.2. Les quatre opérations
A. Addition et soustraction
Ces opérations sont faciles à effectuer, la méthode que l’on apprend à l’école élémentaire étant essentiellement optimale. Il faut partir de la fin et additionner les
chiffres un à un, en reportant la retenue éventuelle.
Pour additionner/soustraire deux entiers de r + 1 chiffres en base b, il faut ainsi effectuer autant d’additions d’entiers compris entre 0 et b −1. Si ces dernières opérations
sont jugées élémentaires, le nombre d’opérations à effectuer est donc (r + 1), ce qui se
fait en un temps proportionnel à la lecture des données et à l’écriture du résultat.
On parle ainsi de complexité linéaire.
B. Multiplication
Soit à multiplier deux entiers, l’un de r +1 chiffres, l’autre de s +1 chiffres. Le résultat
aura r + s + 1 ou r + s + 2 chiffres.
Algorithme naïf reposant sur l’expression
r
X
[a r . . . a 0 ]b [b s . . . b 0 ]b =
a i [b s . . . b 0 ]b b i .
i =0
Chaque terme de la somme se calcule à l’aide de (s + 1) multiplications d’entiers
de {0, . . . , b − 1}, à partir de la droite, et en tenant compte des retenues. La multiplication finale par b r ne coûte rien puisqu’elle consiste juste en un décalage des
chiffres vers la gauche, en complétant par des zéros. Au final, il faut donc effectuer
(r + 1)(s + 1) multiplications d’éléments de {0, . . . , b − 1}. S’y ajoutent r additions de
nombres ayant s + 1 chiffres. La complexité obtenue, O((r + 1)(s + 1)) multiplications
élémentaires, et autant d’additions, est quadratique en la taille des données.
C. Division euclidienne
On veut effectuer la division euclidienne (quotient et reste) de deux entiers N et M
écrits en base b. Si le dividende N possède n chiffres et le diviseur M en a m, le quotient Q aura n − m chiffres, et le reste R en aura moins de m. La méthode de l’école
élémentaire s’applique encore : on calcule un par un les chiffres de Q en partant de la
gauche, et en soustrayant de N ce qui doit l’être. Chaque étape requiert donc m multiplications et additions, soit, au total O(m(n − m)) opérations élémentaires, auquel il
faut ajouter le coût de la détermination des chiffres du quotient où, comme à l’école
élémentaire, se loge la difficulté essentielle. Cela se fait en ne considérant que les m (ou
m+1) premiers chiffres du diviseur ; autrement dit : comment déterminer le quotient q
de [Nm+1 . . . N0 ]b par [M m . . . M 0 ] lorsque ce quotient est compris entre 0 et b ?
Lorsque b est petit, il est possible d’essayer les quotients successifs, un par un,
voire de procéder par dichotomie. Mais l’école élémentaire nous apprend à deviner
les chiffres du quotients en ne regardant que les premiers chiffres du diviseur et du
dividende et cette méthode se généralise. Soit
µ
¶
Nm+1 b + Nm
q̂ = min b
c, b − 1
Mm
CHAPITRE 1. NOMBRES ENTIERS
8
le quotient estimé à l’aide des deux premiers chiffres du diviseur et du premier chiffre
du dividende, ramené à b − 1 s’il était plus grand que b. (Comme il se doit, on suppose
M m > 0, mais on pourrait avoir Nm+1 = 0 si, après un quotient nul, on avait dû abaisser
un chiffre de plus.)
P ROPOSITION 1.2.1. — On a q 6 q̂. Si de plus M m > bb/2c, on a aussi q̂ − 2 6 q.
Démonstration. — Démontrons la première inégalité. Si q̂ = b(Nm+1 b + Nm )/M m c, on
a
Nm+1 b + Nm
q̂ 6
< q̂ + 1,
Mm
d’où
q̂ M m > (Nm+1 b + Nm ) − M m
et donc
q̂ M m > (Nm+1 b + Nm ) − (M m − 1).
Par conséquent,
N − q̂ M 6 N − q̂ M m b m
¡
¢
6 Nm+1 b m+1 + Nm b m + · · · + N1 b + N0 − (Nm+1 b + Nm ) b m + (Mm − 1)b m
¡
¢
6 Nm−1 b m−1 + · · · + N1 b + N0 + (Mm − 1)b m
¡
¢
6 b m − 1 + (Mm − 1)b m 6 Mm b m − 1 < M .
Comme 0 6 N − q M < M , on a donc q̂ > q.
Pour démontrer la seconde inégalité, commençons par observer que
q̂ 6
Nm+1 b + Nm Nm+1 b m+1 + Nm b m
N
N
=
6
6
m
m
Mm
Mm b
Mm b
M − bm + 1
puisque
¡
¢
M m b m = M − M m−1 b m−1 + · · · + M 0 > M − (b − 1)b m−1 − · · · − (b − 1) = M − b m + 1.
Dans le cas où M = b m , on a évidemment q̂ = Nm+1 b + Nm = q. Supposons donc que
l’on a M > b m ; il vient alors q̂ < N /(M − b m ). Comme 0 6 N − q M 6 M − 1 < M , on en
déduit
NM
N bm
(q̂ − q)M < (−N + M ) +
6
M
+
,
M − bm
M − bm
d’où
N bm
q̂ − q < 1 +
.
M M − bm
Supposons par l’absurde que q̂ − q > 3 ; il vient alors
N
M − bm
>2
> 2(Mm − 1).
M
bm
Par suite,
º
N
2(M m − 1) 6
= q 6 q̂ − 3 6 b − 4,
M
d’où l’on tire l’inégalité M m 6 21 b−1, contrairement à l’hypothèse que M m > bb/2c.
¹
§1.2. LES QUATRE OPÉRATIONS
9
Pour faire usage de ce résultat, il suffit, avant d’effectuer une division, de multiplier
le diviseur et le dividende par un même entier d de sorte à ce que la condition de la
proposition soit vérifiée. On peut prendre d = bb/M m c mais choisir une puissance de 2
est préférable dans un ordinateur. On calcule alors Q 0 et R 0 tels que N d = Q 0 Md + R 0
et 0 6 R 0 < Md par la méthode indiquée. Pour terminer le calcul, il reste à effectuer la
division euclidienne de M 0 par d , disons M 0 = q 0 d + r 0 , d’où N = Q 0 M + q 0 et r 0 = 0. On
pose donc Q = Q 0 et R = q 0 .a En fait, [?] propose même une amélioration de ce résultat
qui tient compte du chiffre suivant dans le développement de M et N .
D. Exponentiation
Il s’agit d’une méthode efficace pour calculer des puissances dans un groupe (ou,
plus généralement, dans un monoïde).
Si n est un entier et a un élément d’un monoïde G, le calcul naïf de a n par la formule
n
a = a(a n−1 ) et itération requiert n − 1 multiplications dans G.
En utilisant le développement en base 2 de n, on peut grandement accélérer le processus. Cela repose sur les formules
(
(a 2 )n/2
si n est pair ;
n
a =
a(a 2 )(n−1)/2 si n est impair.
Notons n = [n r . . . n 0 ]2 le développement binaire de n. Pour calculer a n , on effectue
r
r élévations au carré (calculs successifs de a 2 , . . . , a 2 ) et des multiplications dans G
P
dont le nombre est égal à la somme des chiffres binaires de n (moins 1), soit n i . Le
nombre M (n) d’opérations dans G pour calculer a n est donc majoré par 2r , d’où une
complexité linéaire.
CHAPITRE 2
ALGORITHME D’EUCLIDE
§2.1. L’algorithme d’Euclide étendu
A. Anneaux euclidiens
Soit A un anneau (commutatif unitaire) intègre et soit w : A\{0} → N une application
de A dans l’ensemble des entiers naturels. On dit que w est une jauge euclidienne si les
deux propriétés suivantes sont satisfaites :
a) pour tout a ∈ A et tout b ∈ A \ {0}, il existe un couple (q, r ) d’éléments de A tels
que a = bq + r avec ou bien w(r ) < w(b), ou bien r = 0 ;
b) pour tous a et b ∈ A \ {0}, w(ab) > w(a).
On dit que A est un anneau euclidien s’il possède une jauge euclidienne.
On remarquera qu’on n’impose pas l’unicité d’un tel couple (q, r ) dans la définition
d’une jauge. De plus, la jauge est à valeurs entières, mais tout ensemble bien ordonné
ferait l’affaire. Enfin, certain auteurs omettent le second axiome de la définition d’un
anneau euclidien. Ce n’est pas tellement gênant ; en effet, on peut démontrer que l’ensemble des fonctions satisfont le premier axiome admet un plus petit élément (défini point par point en prenant le minimum) et que cette fonction est une jauge euclidienne.
Exemple 2.1.1. — L’anneau Z des entiers relatifs est euclidien, l’application w : (Z \
{0}) → N donnée par n 7→ |n| est une jauge euclidienne.
Le premier axiome est vérifié en prenant pour (q, r ) le quotient et le reste de la division euclidienne de a par b. Par définition, on a 0 6 r < |b|.
Le second est évident car |n| > 1 pour tout n ∈ Z \ {0}.
Exemple 2.1.2. — Soit K un corps. L’anneau K [X ] des polynômes en une variable à
coefficients dans K est euclidien, l’application degré (K [X ] \ {0}) → N étant une jauge
euclidienne.
Exemple 2.1.3. — Les anneaux Z[i ] et Z[ j ] (avec i 2 = −1 et j 2 + j + 1 = 0) sont des anneaux euclidiens ; dans ces deux cas, l’application z 7→ z z̄ est une jauge.
P ROPOSITION 2.1.4. — Un anneau euclidien est un anneau principal : il est intègre et
tous ses idéaux sont principaux.
CHAPITRE 2. ALGORITHME D’EUCLIDE
12
Démonstration. — Soit A un anneau euclidien, soit w une jauge euclidienne et soit I
un idéal de A. L’idéal nul étant principal, supposons I 6= (0). L’ensemble des w(a), pour
a ∈ I \ {0}, est un ensemble non vide d’entiers naturels ; il possède donc un plus petit
élément m. Soit b ∈ I \ {0} tel que w(b) = m et démontrons que I = (b). Pour a ∈ A,
on a ab ∈ I car b ∈ I et I est un idéal. Inversement, soit a ∈ A et soit (q, r ) un couple
d’éléments de A tel que a = bq + r et r = 0 ou w(r ) < w(b). Comme r = a − bq et que
a, b ∈ I , on a r ∈ I . Si l’on avait r 6= 0, on en déduirait que w(r ) > m = w(b), ce qui est
absurde ; donc r = 0 et a ∈ (b).
B. L’algorithme d’Euclide étendu
Il s’agit de l’algorithme suivant. Soit A un anneau euclidien pour une jauge w. Soit
(a, b) un couple d’éléments de A. On pose
a0 = a
u0 = 1
v0 = 0
a1 = b
u1 = 0
v 1 = 1.
Puis, si (a n , u n , v n ) sont définis et a n 6= 0, on se donne q n et r n tels que a n−1 = a n q n +r n
et w(r n ) < w(a n ) ou r n = 0 et l’on pose
a n+1 = a n−1 − q n a n
u n+1 = u n−1 − q n u n
v n+1 = v n−1 − q n v n .
Par récurrence, on a a n = au n + bv n pour tout n tel que a n , u n , v n soient définis.
L’algorithme s’arrête lorsque a n+1 = 0.
T HÉORÈME 2.1.5. — L’algorithme s’arrête toujours.
Démonstration. — En effet, la suite w(a n ) est strictement décroissante tant qu’elle est
définie. Comme elle prend des entiers positifs, elle est finie.
Posons d = a n , u = u n , v = u n . La relation d = au + bv est appelée relation de Bézout
pour a et b. L’élément d construit est un plus grand dénominateur commun de a et b ;
cela signifie les choses suivantes :
a) L’élément a n divise a et b. Démontrons par récurrence descendante sur m 6 n+1
que a n divise a m . C’est vrai si m = n + 1 (car a n divise a n+1 = 0) et si m = n (puisque a n
se divise lui-même). Supposons que a n divise a m , a m+1 , etc. ; par définition de a m+1 ,
on a une relation de la forme a m+1 = a m−1 − q a m , avec q ∈ A, ce qui entraîne que a n
divise a m+1 et a m , il divise a m−1 = a m+1 + q a m . Par récurrence, a n divise a 1 = b et
a 0 = a.
b) Si un élement x de A divise a et b, il divise a n . Cela est évident sur la relation
a n = au n + bv n .
Observons aussi que d est un générateur de l’idéal (a, b).
§2.2. COMPLEXITÉ DE L’ALGORITHME D’EUCLIDE POUR LES ENTIERS
13
C. Groupe spécial linéaire
On peut récrire les relations de récurrence de l’algorithme d’Euclide étendu sous la
forme
¶
¶µ
¶ µ
µ
a n−1 u n−1 v n−1
0
1
an
un
vn
,
=
an
un
vn
1 −q n
a n+1 u n+1 v n+1
où q n est un élément de A tel que a n−1 − q a n = 0 ou w(a n−1 − q a n ) < w(a n ). On en
déduit
¶
¶µ
¶ µ
¶µ
¶ µ
µ
a 1 0
0
1
0
1
0
1
d u
v
...
=
1 −q 1 b 0 1
1 −q n 1 −q n−1
0 u∗ v ∗
Le produit des n matrices 2 × 2 du membre de droite appartient à GL2 (A), est de déterminant (−1)n , et applique le vecteur (a, b) sur le vecteur (d , 0). Son inverse applique le
vecteur (1, 0) sur le vecteur (a/d , b/d ).
Soit M une matrice de SL2 (A) et soit (a, b) sa première colonne. Le pgcd de a et b
est une¡ unité.
¢ On construit alors une matrice U ∈ SL2 (A), produit de matrices de la
1
forme 01 −q
, telle que U M applique le vecteur (1, 0) sur lui-même. Autrement dit, U M
¡ ¢
est de la forme 10 1z .
CORRIGER : Comme
µ
¶ µ
¶µ
¶µ
¶
1 z
0
1
0
1
0
1
=
,
0 1
−1 −1 −1 −1 −1 −z
on en ¡conclut
¢ au passage que le groupe SL2 (A) est engendré par les matrices de la
0 1
forme −1 q .
Dans l’autre sens, la formule
µ
¶ µ
¶µ
¶µ
¶
1 1 1 0 1 1−z
0 1
=
−1 z
0 1 −1 1 0
1
¡ ¢ ¡ ¢
entraîne que le groupe SL2 (A) est engendré par les matrices de la forme 10 q1 et q1 01 .
D. Application au calcul modulaire
Soit A un anneau et a un élément de A qui n’est ni nul ni inversible. Lorsque A est
euclidien, l’algorithme d’Euclide étendu permet de calculer des inverses dans l’anneau
quotient A/(a).
Soit b ∈ A. Supposons sa classe inversible dans A/(a) ; il existe alors v ∈ A tel que
bv ≡ 1 (mod a), donc u ∈ A tel que bv = 1 − au. La relation au + bv = 1 entraîne que a
et b sont premiers entre eux.
Inversement, si a et b sont premiers entre eux, l’algorithme d’Euclide étendu produit
une relation au + bv = d , où d est inversible dans A. Alors, a(u/d ) + b(v/d ) = 1, et la
classe de v/d est l’inverse de celle de b dans A/(a).
§2.2. Complexité de l’algorithme d’Euclide pour les entiers
Commençons par analyser le nombre d’opérations requises par le calcul du pgcd
de deux entiers strictement positifs a et b. L’argument qu’on a utilisé pour assurer
14
CHAPITRE 2. ALGORITHME D’EUCLIDE
que l’algorithme se termine est la décroissance de la suite (a n ). Si l’algorithme s’arrête à l’étape N (a, b) (c’est-à-dire a 1+N (a,b) = 0), on a donc N (a, b) 6 b. Nous allons
voir qu’une bien meilleure inégalité est satisfaite.
La suite de Fibonacci (F n ) est définie par F 0 = 0, F 1 = 1 et Fpn+1 = F n + F n−1 pour tout
entier n > 1. Les racines du polynôme x 2 − x − 1 sont (1 ± 5)/2 ; par conséquent, il
existe des nombres réels u et v tels que
p
p
¡ 1 + 5 ¢n
¡ 1 − 5 ¢n
Fn = u
+v
,
2
2
p
p
p
pour tout n. En particulier, 0 = u + v et 1 = u 1+2 5 + v 1−2 5 , d’où l’on tire u = −v = 1/ 5.
P ROPOSITION 2.2.1. — Si a > b et n = N (a, b), alors a > F n+2 et b > F n+1 .
Démonstration. — Démontrons ceci par récurrence sur n. Si n = 1, il suffit de démontrer a > F 3 et b > F 2 , inégalités toutes deux vraies puisque F 2 = 1 et F 3 = 2 (et a > b > 0,
donc a > 2).
Supposons le résultat vrai si N (a, b) < n. Par construction, n = N (a, b) = N (a 0 , a 1 ) =
1+N (a 1 , a 2 ). De plus, a 1 > a 2 (car a 2 est le reste de la division euclidienne de a 0 par a 1 ).
On a donc a 1 > F n+1 et a 2 > F n . Puisque a 0 = q 0 a 1 + a 2 et q 0 > 1, on en déduit a 0 >
a 1 + a 2 > F n+1 + F n = F n+2 .
On a F 2 = 1 et pour n > 2, F n+1 = F n + F n−1 > F n . Par conséquent, si n > 2, le reste de
la division euclidienne de F n+1 par F n est égal à F n−1 . Si l’on pose ainsi a = F n+2 et b =
F n+1 , on a a k = F n+2−k pour tout k tel que n + 2 − k > 1, donc en particulier a n = F 2 = 1.
Alors, a n+1 = 0. Cela montre que les inégalités de la proposition sont optimales.
C OROLLAIRE 2.2.2. — Si a > b > 0, on a N (a, b) < O(log b).
Démonstration. — En effet, si n = N (a, b), on a
p
p
p
1 ¡ 1 + 5 ¢n+1
1 ¡ 1 − 5 ¢n+1
1 ¡ 1 + 5 ¢n+1
b > F n+1 = p
−p
>p
− 1,
2
2
2
5
5
5
d’où l’inégalité
p
p
¡ 2 5
¢
¡1+ 5¢
n 6 log
= O(log b).
p (b + 1) / log
2
1+ 5
Ces inégalités majorent le nombre de pas effectués par l’algorithme mais pas tout à
fait la complexité de l’algorithme lui-même. En effet, la complexité des divisions euclidiennes dépend de leurs arguments. Une majoration simple consiste à observer que
les a i sont majorés par a, si bien que chaque division requiert O(log a)2 opérations ; la
complexité totale est ainsi majorée par O(log a)3 .
On peut être plus précis en utilisant le fait que les a i diminuent. En effet, la division
euclidienne de a k−1 par a k requiert O(log(q k ) log(a k )) opérations par la méthode naïve.
§2.3. COMPLEXITÉ DANS LE CAS DES POLYNÔMES
15
Par suite, le nombre d’opérations que l’algorithme d’Euclide effectue est majoré par un
multiple de
n
X
X
log(q k ) log(a k ) 6 log(b) = 1n log(q k ).
k=1
k
Les relations a k−1 = q k a k + a k+1 entraînent a k−1 > q k a k , d’où q 1 . . . q n 6 a 0 /a n 6 a 0 .
C OROLLAIRE 2.2.3. — On peut calculer le pgcd de deux entiers positifs a > b et une
relation de Bézout en O(log(a) log(b)) opérations.
Démonstration. — L’assertion concernant le pgcd est déjà vue. Pour la relation de Bézout, le raisonnement est analogue.
§2.3. Complexité dans le cas des polynômes
A. Une première majoration
Soit K un corps et a, b des polynômes de K [X ], supposés non nuls. Le calcul de leur
pgcd requiert au plus 1 + deg(b) étapes : la suite des degrés des a n étant strictement
décroissante tant qu’elle est définie, on a deg(a n ) 6 deg(a 1 ) + 1 − n = deg(b) + 1 − n. Par
conséquent, si la suite (a k ) est définie pour n = deg(b) + 1, on trouve deg(a n ) 6 0 donc
a n+1 = 0.
P ROPOSITION 2.3.1. — Pour calculer le pgcd de a et b, ainsi qu’une relation de Bézout,
on doit effectuer au plus
O((1 + deg(a))(1 + deg(b)))
additions et multiplications, et (1 + deg(b)) inversions dans le corps K
B. Explosion des coefficients et normalisations
L’analyse précédente suppose que les opérations dans le corps K ont une complexité
indépendante des données ; c’est bien ce qui se passe si K est un corps fini. En revanche, lorsque K = Q, le corps des nombres rationnels, il faut en outre se préoccuper
de la taille des nombres qui apparaissent.
Or, l’algorithme, tel qu’il a été énoncé plus haut, fait apparaître une explosion des
coefficients qui, au moins en apparence, ruine la borne de complexité que nous avons
calculée.
Un remède (partiel) consiste à normaliser les restes de la division euclidienne, de
sorte que la suite (a n ) est constituée de polynômes unitaires.
C. Une majoration du résultat
CHAPITRE 3
NOMBRES PREMIERS, FACTORISATION
Rappelons qu’on dit qu’un nombre entier p > 1 est un nombre premier s’il n’est divisible par aucun autre nombre entier positif que 1 et lui-même.
Au delà de l’intérêt théorique qu’ils suscitent, les nombres premiers sont devenus
un outil important pour certaines applications des mathématiques à la vie courante,
notamment la cryptographie ou la signature électronique (Internet...) et les codes correcteurs d’erreurs utilisés en télécommunication numérique.
La production de nombres premiers « aléatoires » de grande taille est ainsi devenue une activité courante, rendant nécessaire le développement de méthodes efficaces
permettant d’affirmer qu’un nombre entier donné n est, ou n’est pas, un nombre premier.
On notera P l’ensemble des nombres premiers.
§3.1. Nombres premiers
A. Définition, crible d’Ératosthène
Il convient de remarquer que tout nombre entier strictement supérieur à 1 est multiple d’un nombre premier : c’est clair s’il est lui-même premier et dans le cas contraire,
c’est un multiple de deux nombres entiers strictement plus petits qui sont par récurrence multiples d’un nombre premier. On peut encore raffiner cette remarque : tout
nombre entier n strictement supérieur à 1 qui n’est pas premier est divisible par un
p
nombre premier au plus égal à n.
Cette remarque faite, on peut alors commencer à énumérer les éléments de P à
l’aide du crible d’Eratosthène qui consiste à écrire les nombres entiers 2, . . . , jusqu’à un
certain point, disons 20 :
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
puis à raisonner de la façon suivante. L’entier 2 est premier, donc ses multiples 4, 6, . . .
ne le sont pas ; on les raye :
13,
15,
11,
17,
19,
2, 3, 4 , 5, 6 , 7, 8 , 9,
10,
12,
14,
16,
18,
20.
CHAPITRE 3. NOMBRES PREMIERS, FACTORISATION
18
Après 2, le premier entier non rayé, en l’occurence 3, est forcément un nombre premier : dans le cas contraire, il aurait été multiple d’un nombre premier déjà détecté ;
on le sélectionne et on raye ses multiples 6, 9, . . . :
13,
11,
17,
19,
2, 3, 4 , 5, 6 , 7, 8 , 9 ,
10,
12,
14,
15,
16,
18,
20.
De même, 5 est premier, on raye ses multiples :
11,
17,
19,
2, 3, 4 , 5, 6 , 7, 8 , 9 ,
10,
12,
13,
14,
15,
16,
18,
20.
On constate cependant qu’on n’a rien rayé de nouveau. En effet, 52 > 20 donc les
nombres entiers inférieurs à 25 sont ou bien premiers, ou bien sont divisibles par un
nombre premier au plus égal à 5. Par le même argument, tous ceux qui restent sont des
nombres premiers, d’où le début de l’énumération :
P ∩ [1, 20] = {2, 3, 5, 7, 11, 13, 17, 19}.
B. Test de divisibilité
Si l’on veut déterminer la primalité d’un entier n, on peut s’appuyer sur la définition,
c’est-à-dire effectuer les divisions par tous les entiers inférieurs à n ou plutôt, comme
p
on l’a vu, inférieurs à n. Cette méthode est rapidement impraticable si n a plus de
quelques chiffres. Le bon paramètre est en effet le nombre de chiffres de n, c’est-àdire, à un factor près, le logarithme de n.
C. Témoins de primalité ou de non-primalité ; algorithmes probabilistes
Les algorithmes dont nous allons parler ici résultent le plus souvent de théorèmes
qui prennent l’une des formes suivantes :
– si n est premier, tout entier a tel que 1 6 a 6 n vérifie une certaine propriété P (a).
Dans ce cas, il suffit d’exhiber un entier a tel que la propriété ne soit pas satisfaite pour en déduire que n n’est pas premier ; un tel a sera appelé témoin de
non-primalité. En revanche, savoir que tout entier a vérifie P (a) n’impliquera pas
toujours que n soit un nombre premier.
– si n est premier, il existe un entier b, dans [1, n] vérifiant une propriété Q(b). On
dira que b est un témoin de primalité. car exhiber un entier b vérifiant Q(b) prouve
que b est un nombre premier.
Dans l’un et l’autre cas, il n’est cependant pas toujours raisonnable de tester tous les
entiers successivement, à moins de savoir qu’il existe un entier a vérifiant P (a), ou un
entier b vérifiant Q(b), qui soit de taille modérée.
Si l’on sait qu’une proportion importante des est constituée de témoins de primalité
, on peut tester la propriété Q(b) sur des entiers b pris au hasard : si n est premier,
la probabilité qu’aucun des entiers choisis ne soit un témoin de primalité, est égale
à (1 − π)−k si π est la densité des témoins de primalité et k le nombre d’essais, donc
décroît très rapidement avec k. Le test obtenu est ainsi appelé probabiliste.
§3.1. NOMBRES PREMIERS
19
D. Critère de Fermat
Ce test repose sur le « petit théorème de Fermat » :
P ROPOSITION 3.1.1. — Soit p un nombre premier ; pour tout entier a qui n’est pas multiple de p, on a a p−1 ≡ 1 (mod p).
Démonstration. — L’ensemble des éléments non nuls du corps Z/pZ est un groupe
pour la multiplication ; son cardinal est p − 1. Par conséquent, pour tout α ∈ (Z/pZ)× ,
αp−1 = 1. Traduit en termes de nombres entiers, on obtient a p−1 ≡ 1 (mod p) si a est
un entier qui n’est pas multiple de p.
Cette proposition fournit un test de non-primalité : si n est un nombre entier, il suffit d’exhiber un nombre entier a dans l’intervalle [1, n − 1] tel que a r −1 6≡ 1 (mod n)
pour en déduire que n n’est pas un nombre premier. On l’appelle le test de Fermat. On
observera que la donnée d’un tel a prouve que n n’est pas premier sans pour autant
l’écrire comme produit de deux entiers inférieurs à n.
Toutefois, il existe des nombres entiers n, appelés nombres de Carmichael, vérifiant
la propriété suivante : tout entier a tel que 1 6 a < n qui est premier à n vérifie a n−1 ≡ 1
(mod n). Pour ces nombres entiers-là, les seuls témoins de non-primalité sont les entiers a qui ne sont pas premiers à n et fournissent ainsi automatiquement une factorisation partielle de n. Le plus petit d’entre eux, découvert justement par Robert Carmichael en 1910, est 561. Un théorème démontré par les mathématiciens Alford, Granville
et Pomerance en 1994 affirme qu’il existe une infinité de nombres de Carmichael.
Malgré ce défaut, le test de Fermat est utilisé par l’algorithme de cryptage PGP pour
décider qu’un nombre entier donné est premier ; la probabilité qu’il échoue étant
considérée comme négligeable.
P ROPOSITION 3.1.2. — Soit n un nombre entier > 1 qui n’est ni un nombre premier, ni
un nombre de Carmichael, Alors, au moins la moitié des nombres entiers a de [1, n] qui
sont premiers à n sont des témoins de non-primalité pour le test de Fermat.
Démonstration. — Soit G le groupe (Z/nZ)∗ et soit F l’ensemble des éléments de G qui
ne sont pas des témoins de non-primalité pour le test de Fermat. Autrement dit, F est
l’ensemble des a ∈ G tels que a n−1 ≡ 1 (mod n). C’est un sous-groupe de G. Comme
n n’est ni premier ni un nombre de Carmichael, c’est un sous-groupe strict donc son
indice (G : F ) est au moins égal à 2, d’où la proposition.
Q
n
Remarque 3.1.3. — Soit n un nombre de Carmichael et soit n = ui=1 p i i sa décomposition en facteurs premiers.
Comme −1 est d’ordre 2 dans (Z/nZ)∗ , l’hypothèse que n est de Carmichael entraîne
(−1)n−1 ≡ 1, donc n est impair.
n
Soit a ∈ (Z/nZ)∗ et soit ωi l’ordre de a modulo p i i . Par hypothèse, ωi divise n − 1,
n
n −1
mais il divise aussi le cardinal de (Z/p i i Z)∗ c’est-à-dire p i i
n −1
p i i , ωi
(p i − 1). Comme n − 1
est premier à
divise pgcd(p i − 1, n − 1). La classe de a dans le groupe cyclique
ni ∗
(Z/p Z) appartient en particulier à un sous-groupe d’ordre p i −1, d’où card(Z/nZ)∗ 6
Qu i
i =1 (p i − 1) par le lemme chinois. Cela entraîne que n i = 1 pour tout i .
CHAPITRE 3. NOMBRES PREMIERS, FACTORISATION
20
D’autre part, si l’on avait u = 2, on aurait
pgcd(p 1 − 1, n − 1) = pgcd(p 1 − 1, (p 1 − 1)p 2 + (p 2 − 1) = pgcd(p 1 − 1, p 2 − 1).
Notons d ce pgcd. La classe de a dans chacun des groupes cycliques (Z/p 1 Z) et (Z/p 2 Z)
appartient à un sous-groupe d’ordre d ; on a donc
(p 1 − 1)(p 2 − 1) = card(Z/nZ)∗ 6 d 2 ,
ce qui est absurde : si p 1 < p 2 , alors d 6 p 1 − 1 et d 2 6 (p 1 − 1)2 .
E. Critère de Lucas
Il repose sur les propriétés des groupes abéliens finis.
L EMME 3.1.4. — Soit G un groupe abélien fini, noté multiplicativement. Soit g et h des
éléments de G d’ordres m et n. Si m et n sont premiers entre eux, alors g h est d’ordre mn.
Démonstration. — Observons que les sous-groupes ⟨g ⟩ et ⟨h⟩ n’ont pas d’autre élément commun que 1. En effet, l’ordre d’un élément commun doit diviser m et n, donc
est égal à 1. Par suite, si (g h)N = 1, qu’on peut récrire g N = h −N puisque G est commutatif. D’après la remarque faite, g N = h −N = 1 ; ainsi, N est multiple de m et de n, donc
de mn. Inversement, (g h)mn = g mn h mn = 1.
P ROPOSITION 3.1.5. — Soit G un groupe abélien fini, noté multiplicativement. Pour
toute partie S de G, il existe un élément de G dont l’ordre est le plus petit multiple commun des ordres des éléments de S. En particulier, il existe dans G un élément dont l’ordre
est multiple de l’ordre de chaque élément de G.
Démonstration. — Par récurrence, il suffit de démontrer si G possède deux éléments g et h d’ordres m et n, il possède un élément d’ordre ppcm(m, n). Comme
ordp (ppcm(m, n)) = max(ordp (m), ordp (n)), on peut écrire m = m 0 m 00 et n = n 0 n 00 , où
les facteurs premiers de m 0 et n 0 sont ceux tels que ordp (m) > ordp (n), ceux de m 00
00
0
et n 00 étant ceux tels que ordp (n) > ordp (m). Alors, g m est d’ordre m 0 , tandis que h n
est d’ordre n 00 . Les entiers m 0 et n 00 sont premiers entre eux, leur produit est égal au
00
0
plus petit multiple comun de m et n ; d’après le lemme, l’ordre de g m h n est égal
à ppcm(m, n).
Nous pouvons maintenant énoncer le théorème qui donne lieu au critère de primalité de Lucas-Lehmer.
T HÉORÈME 3.1.6. — Soit n un entier > 1. Supposons que pour tout facteur premier p
de n − 1, il existe un entier a tel que a n−1 ≡ 1 (mod n) et a (n−1)/p 6≡ 1 (mod n). Alors, n
est un nombre premier.
Démonstration. — Si a est un entier tel que a n−1 ≡ 1 (mod n), observons que a et n
sont premiers entre eux. L’hypothèse signifie donc qu’il existe, pour tout facteur premier p de n − 1, un élément a p du groupe (Z/nZ)× dont l’ordre divse n − 1 mais ne
divise pas (n − 1)/p. Le plus petit multiple commun des ordres de ces éléments a p divise n − 1 mais n’est pas un diviseur strict de n − 1 ; il est donc égal à n − 1. D’après la
§3.1. NOMBRES PREMIERS
21
proposition 3.1.5, le groupe (Z/nZ)× possède un élément d’ordre n − 1. Cela impose
que (Z/nZ)× soit d’ordre au moins n − 1, donc que n soit un nombre premier.
Considérons par exemple l’entier n = 571 ; puisque l’on a
n − 1 = 570 = 2 × 3 × 5 × 19,
il suffit de trouver dans le groupe (Z/571Z)∗ quatre éléments d’ordres ne divisant
pas 570/p pour p = 2, 3, 5, 19, autrement dit quatre entiers x p tels que 571 divise x p570 −1,
570/p
tandis que x p
et 571 soient premiers entre eux.
Lorsque p = 2, 570/p = 285 et x 2 = −1 convient. Voyons si x = 2 convient : on a
570/3 = 190, 570/5 = 114 et 570/19 = 30. On a respectivement
2570 ≡ 1,
2190 ≡ 461,
2114 ≡ 1,
230 ≡ 306 (mod 571).
En particulier, l’ordre de 2 dans (Z/571Z)∗ divise 570 mais ne divise pas 570/p si
p = 3 ou 19. Il reste à trouver un entier x convenant pour p = 5 ; comme 3114 ≡ 481
(mod 571), il convient et cela conclut la démonstration que 571 est un nombre premier.
Le défaut de ce critère est de nécessiter la factorisation de n − 1, mais des variantes
permettent de se contenter d’une factorisation partielle, cf. l’exercice 3.1.10. Son intérêt est qu’il produit un certificat de primalité : la simple donnée des entiers x 2 = −1,
x 3 = 2, x 5 = 3 et x 19 = 2 permet à n’importe qui de vérifier rapidement que 571 est
effectivement un nombre premier.
Il est néanmoins utile lorsque n est un nombre de Fermat, c’est-à-dire de la forme
2r
2 + 1 ; on obtient alors le critères de Pépin et de Proth :
C OROLLAIRE 3.1.7 (Critères de Pépin–Proth). — Soit r un nombre entier tel que r > 2.
r
Pour que le nombre de Fermat F r = 22 + 1. soit un nombre premier, il faut et il suffit que
l’on ait l’une des congruences suivantes :
a) 3(Fr −1)/2 ≡ −1 (mod F r ) ;
b) 5(Fr −1)/2 ≡ −1 (mod F r ).
r
Démonstration. — Comme F r − 1 = 22 , la suffisance de ces conditions résulte du critère de Lucas. Supposons inversement que F r soit un nombre premier et vérifions ces
deux congruences. Elles signifient en fait que 3 et 5 ne sont pas des carrés modulo F r et
résultent immédiatement de la loi de réciprocité quadratique de Gauß compte tenu des
r
r −1
r −1
congruences F r ≡ 1+(−1)2 ≡ 2 (mod 3) et F r ≡ 1+42 ≡ 1+(−1)2 ≡ 2 (mod 5).
Voir l’exercice 3.1.11 pour une démonstration des cas de la loi de réciprocité quadratique qui ont été utilisés dans la démonstration précédente.
Sous les hypothèses du critère de Lucas, le groupe multiplicatif (Z/nZ)× est cyclique.
Il est important de savoir que cette propriété est vérifiée pour tout nombre premier
puisque cela montre que les hypothèses de ce critère sont aussi nécessaires. Plus généralement :
T HÉORÈME 3.1.8. — Soit F un corps commutatif et soit G un sous-groupe fini de F × .
Alors G est cyclique.
22
CHAPITRE 3. NOMBRES PREMIERS, FACTORISATION
Démonstration. — Soit g un élément de G dont l’ordre, disons n, est multiple de
l’ordre de tout élément de G. Tout élément x de G vérifie x n = 1. Comme F est un corps
commutatif, l’équation polynomiale x n = 1 dans F a au plus n solutions. Comme les
n éléments 1, g , g 2 , . . . , g n−1 du sous-groupe de G engendré par g sont solutions, on a
nécessairement G = ⟨g ⟩.
Seconde démonstration. — Soit n l’ordre de G. D’après le lemme et une récurrence
évidente, il suffit de produire, pour tout facteur premier p de G, un élément g p de G
dont l’ordre est p ordp (n) . En effet, le produit des g p sera un élément de G d’ordre n.
Comme F est un corps commutatif, l’équation polynomiale x n/p = 1 a au plus n/p
solutions ; comme G est d’ordre n > n/p, il existe donc un élément x de G tel que x n/p 6=
r
r
r −1
1. Posons alors y = x n/p . On a y p = 1 mais y p = x n/p 6= 1. Par suite, l’ordre de y est
un diviseur de p r qui ne divise pas p r −1 ; c’est donc p r et on peut poser g p = y.
L’intérêt de la seconde démonstration est qu’elle se prête au calcul effectif d’un générateur. Montrons-le sur un exemple, disons le calcul d’un générateur du groupe multiplicatif (Z/71Z)× . On a 71 − 1 = 70 = 2 × 5 × 7 ; d’après la démonstration, nous devons
trouver des éléments d’ordres 2, 5 et 7.
Il est clair que g 2 = −1 est d’ordre 2. Cherchons un élément d’ordre 5 ; il suffit de
trouver un élément x tel que x 14 6≡ 1 (mod 71). Essayons x = 2 :
214 ≡ 47 ≡ 4 · (16)3 ≡ 4 · (16) · (256) ≡ 64 · 43 ≡ −7 · 43 ≡ −301 ≡ −17 (mod 71).
Par suite, g 5 = −17 est d’ordre 5. De même, cherchons un élément x tel que x 10 6≡ 1
(mod 71) et essayons encore x = 2 :
210 ≡ 16 · 64 ≡ 16 · (−7) ≡ −112 ≡ 30 (mod 71)
si bien que g 7 = 30 est d’ordre 7. Leur produit
g 2 g 5 g 7 ≡ (−1) × (−17) × (30) ≡ 510 ≡ 13 (mod 71)
est ainsi un générateur du groupe multiplicatif (Z/71Z)× .
Remarque 3.1.9. — On peut raisonner à l’envers et se demander, un entier a étant
donné, pour quels nombres premiers p est-ce que a est un générateur du groupe multiplicatif (Z/pZ)∗ . Pour qu’un tel nombre premier impair existe, une condition nécessaire évidente est que a ne soit pas un carré : si p est impair, les carrés de (Z/pZ)∗
forment un sous-groupe strict. De même, a = −1 n’est un générateur de (Z/p Z )∗ que si
p = 2 ou p = 3. Une conjecture du mathématicien Emil Artin est que ces deux conditions nécessaires sont suffisantes pour qu’il existe une infinité de tels nombres premiers ! Cette conjecture est toujours ouverte : on ne connaît à ce jour aucun nombre
entier a pour lequel on sache qu’elle est vérifiée. Cependant, C. Hooley a démontré en 1967 qu’elle est vérifiée si l’hypothèse de Riemann généralisée l’est, tandis que
R. Heath-Brown (1985), généralisant des travaux de R. Gupta et M. Ram Murty (1984),
a montré qu’elle est vérifiée pour tout nombre premier a sauf au plus 2. Par exemple,
des entiers 3, 5 et 7, au moins l’un est un générateur de (Z/pZ)∗ pour une infinité de
nombre premiers p.
§3.1. NOMBRES PREMIERS
23
Exercice 3.1.10. — a) Soit N un entier tel que N > 2. Soit p un nombre premier qui
divise N − 1 et soit e le plus grand entier > 1 tel que p e divise N − 1. Soit a un entier
tel que a N −1 ≡ 1 (mod N ) et tel que a (N −1)/p et N soient premiers entre eux. Soit ` un
nombre premier qui divise N .
Montrer que (la classe de) a est inversible dans (Z/`Z). Si t désigne son ordre, montrer les divisibilités p e |t et t |` − 1. En déduire que ` ≡ 1 (mod p e ) (critère de Pocklington).
b) Soit N un entier > 2. On écrit N = 1 + uv et on suppose que pour tout nombre
premier p qui divise u, il existe un entier a comme dans la question précédente. Montrer que tout facteur premier ` de N est congru à 1 modulo u. Si de plus v 6 u + 1, en
déduire que N est un nombre premier (critère de primalité de Pocklington-Lehmer).
Exercice 3.1.11. — Cet exercice propose la démonstration directe de quelques cas de
la loi de réciprocité quadratique, à partir de la remarque que pour certaines valeurs
de n, 2 cos(2π/n) vérifie une équation du second degré dont le discriminant est ±n.
a) Soit x une racine primitive huitième de l’unité. Montrer que x + 1/x est solution
d’une équation du second degré à coefficients dans Fp dont le discriminant est 2. En
déduire que 2 est un carré modulo p si p ≡ ±1 (mod 8). Inversement, si 2 est un carré
modulo p, montrer que x et 1/x sont solutions d’une équation du second degré de
discriminant −2. En déduire que p ≡ ±1 (mod 8).
b) Écrire l’équation du second degré dont les solutions sont les racines primitives
cubiques de l’unité. En déduire que −3 est un carré modulo un nombre premier p > 4
si et seulement si p ≡ 1 (mod 3).
c) Soit p un nombre premier tel que p > 5. Soit x une racine primitive cinquième de
l’unité dans une extension de Fp . Montrer que u = x + 1/x est solution d’une équation
du second degré de discriminant 5. Si p 2 ≡ 1 (mod 5), en déduire que 5 est un carré
modulo p.
d) (suite) Supposons inversement que 5 soit un carré modulo p. Montrer que x et 1/x
sont les solutions de l’équation t 2 −t u +1 = 0. Montrer que x p est aussi une solution de
cette équation et en déduire que l’on a x p = x ou x p = 1/x, puis que p ≡ ±1 (mod 5).
Exercice 3.1.12. — a) Soit n et m des nombres entiers. Montrer que le groupe (Z/nZ) ×
(Z/mZ) est cyclique si et seulement si n et m sont premiers entre eux.
b) Si n est une puissance de 2, montrer que (1 + 4x)n ≡ 1 + 4nx modulo 8n.
c) Soit a un entier > 2 et n = 2a . Montrer que l’ordre de (la classe de) 5 dans (Z/nZ)∗
est égal à 2a−2 . Le groupe (Z/nZ)∗ est-il cyclique ?
d) Soit p un nombre premier impair, a un entier > 2 et n = p a . Si x est un entier,
montrer que x p ≡ x (mod p). Montrer par récurrence sur a > 2 que les conditions
x ≡ 1 (mod p a−1 ) et x p ≡ 1 (mod p a ) sont équivalentes.
e) Soit x un entier dont la classe modulo p engendre (Z/pZ)∗ . Montrer que (la classe
de) x engendre (Z/nZ)∗ si et seulement si x p−1 6≡ 1 (mod p 2 ).
f) Si x p−1 ≡ 1 (mod p 2 ), montrer que (x + p)p−1 6≡ 1 (mod p 2 ). En déduire qu’au
moins l’un des deux, x ou x + p, est générateur de (Z/nZ)∗ .
24
CHAPITRE 3. NOMBRES PREMIERS, FACTORISATION
g) Démontrer que le groupe (Z/nZ)∗ est cyclique si et seulement n = 2, n = 4, n = p r ,
n = 2p r ou n = 4p r , où p est un nombre premier impair et r un entier > 1.
F. Test de Miller-Rabin
C’est un raffinement du test de Fermat qui repose sur la remarque suivante : si p est
un nombre premier et a un entier tel que a 2 ≡ 1 (mod p), alors a ≡ ±1 (mod p). En
effet, l’hypothèse est que p divise a 2 − 1 = (a − 1)(a + 1) ; il divise donc l’un des facteurs
d’après le lemme d’Euclide.
P ROPOSITION 3.1.13. — Soit p un nombre premier impair et soit a un nombre premier
non multiple de p. Notons r = ord2 (p − 1), m = (p − 1)/2r et soit s > 0 le plus petit entier
s
tel que a m2 ≡ 1 (mod p).
s−1
Si s > 0, alors a m2 ≡ −1 (mod p).
Soit n un nombre entier impair, r = ord2 (n − 1) et m = (n − 1)/2r . Un témoin de nonprimalité de Miller-Rabin pour n est un entier a tel qu’il existe un entier k ∈ {1, . . . , r }
k−1
k
tel que a m2 6≡ −1 (mod n) mais a m2 ≡ 1 (mod n). L’intérêt de ce test est qu’il est
fiable : le phénomène des nombres premiers de Carmichael ne se produit plus :
P ROPOSITION 3.1.14. — Soit n un nombre entier impair tel que n > 9. Alors, Plus précisément, au moins trois quarts des nombres entiers a dans [1, n − 1] sont des témoins de
non-primalité de Miller-Rabin.
Q
n
Démonstration. — Notons n = ui=1 p i i la décomposition en facteurs premiers de n
et, pour tout i , soit r i = ord2 (p i − 1) l’exposant de 2 dans la décomposition en facteurs
premiers de p i − 1 ; notons ρ le minimum des r i .
Posons encore G = (Z/nZ)∗ et introduisons une suite de sous-groupes de G. On note
F le sous-groupe formé des a ∈ G tels que a n−1 = 1. Soit aussi K , resp. L, resp. M , l’enρ−1
ρ−1
semble des éléments de F tels que a 2 m ≡ 1 (mod n), resp. a 2 m ≡ ±1 (mod n),
ρ−1
n
resp. a 2 m ≡ ±1 (mod p i i ) pour tout i . Ce sont des sous-groupes de G tels que K ⊂
L ⊂ M.
Par définition, un témoin de non-primalité de Miller–Rabin est un élément de ⊂ F ⊂
G, et a appartient à L.
Soit a un élément de G qui n’est pas un témoin de non-primalité de Miller-Rabin.
k
Par définition, il existe donc k ∈ {1, . . . , r } tel que a 2 m ≡ 1 (mod n) (c’est-à-dire a ∈ F )
k−1
k−1
n
et a 2 m ≡ −1 (mod n). On a donc a 2 m ≡ −1 (mod p i i ) pour tout i . Pour tout i ,
n
l’ordre ωi de a dans le groupe abélien fini (Z/p i i Z)∗ divise 2k m, mais pas 2k−1 m. Cela
n −1
entraîne ord2 (ωi ) = k. Comme ωi divise aussi le cardinal p i i
2ρ−1 m
(p i −1) de ce groupe, on
a k 6 r i . Autrement dit, k 6 ρ, d’où l’on tire que a
≡ ±1 (mod n). En particulier, a
appartient à L. Pour conclure la démonstration de la proposition, il suffit donc d’établir
que (G : L) > 4.
Démontrons tout d’abord que (M : K ) = 2u et (L : K ) = 2. Considérons pour cela
l’homomorphisme de groupes ϕ de M dans {±1}u qui, à a ∈ M , associe la famille
ρ−1
n
(a 2 m mod p i i ). Son noyau est égal à K ; l’égalité (M : K ) = 2u signifie donc qu’il est
§3.2. FACTORISATION
25
surjectif. Or, pour tout i , le groupe (Z/p i i Z)∗ est cyclique et 2ρ−1 divise son cardinal
n
n −1
(p i − 1)p i i
ρ−1
n
; il existe donc un entier a i ∈ Z/p i i Z tel que a i2
n
ρ−1
n
≡ −1 (mod p i i ), d’où
a i2 m ≡ −1 (mod p i i ). Soit (εi ) ∈ {±1}u . D’après le lemme chinois, il existe un entier
n
a tel que a ≡ a i (mod p i i ) si εi = −1 et a ≡ 1 si εi = 1. Un tel entier vérifie ϕ(a) = (εi ),
ce qui démontre la surjectivité de ϕ.
La démonstration que (L : K ) = 2 est analogue. On considère l’homomorphisme
ρ−1
de groupes ψ de L dans {±1} donné par a 7→ a 2 m (mod n). Son noyau est K ; par
ailleurs, la surjectivité de l’homomorphisme ϕ entraîne que ψ est surjective — un élément a ∈ M tel que ϕ(a) = (−1, . . . , −1) appartient à L et vérifie ψ(a) = −1.
Alors,
(G : L) = (G : F )(F : M )(M : L) > (G : F )
(M : K )
> (G : F )2u−1 .
(L : K )
Si u > 3, on a en particulier (G : L) > 4. Si u 6 2, on sait que n n’est pas un nombre de
Carmichael (remarque 3.1.3) ; par conséquent, F 6= G, d’où (G : F ) > 2 et (G : L) > 4 si
u = 2.
n
Traitons enfin le cas u = 1, c’est-à-dire n = p 1 1 . Nous devons renforcer l’inégalité
(G : F ) > 2 ; reprenons les arguments de la remarque 3.1.3. L’ordre d’un élément de F
n −1
n
divise p 1 1 (p 1 − 1) et p 1 1 − 1 ; il divise donc p 1 − 1 et a p 1 −1 ≡ 1 (mod n) pour tout
a ∈ F . Comme G est cyclique, cela entraîne que card(F ) 6 p 1 − 1 (on a en fait égalité)
n −1
donc (G : F ) > p 1 1 . Si p 1 > 5, on a donc (G : F ) > 5 ; si p 1 = 3, alors n 1 > 3 (car n > 9)
et (G : F ) > 9.
On dispose ainsi d’un algorithme de primalité de nature probabiliste : tirons k
nombres entiers au hasard dans [1, n] ; si n n’est pas premier, la probabilité qu’aucun
ne soit un témoin de non-primalité est inférieure ou égale à 1/4k . Autrement dit, si
l’on tire au hasard k nombres entiers et qu’aucun n’est un témoin de non-primalité de
Miller-Rabin, il y a de fortes chances pour que n soit premier.
Si l’on admet l’hypothèse de Riemann généralisée, un théorème d’E. Bach (1990)
affirme que dès qu’un entier n > 1 n’est pas un nombre premier, il y a un témoin de
non-primalité inférieur à 2(log n)2 . Cela permet d’envisager essayer les entiers dans
l’ordre et de tester si ce sont des témoins de non-primalité et fournit, sous l’hypothèse
de Riemann généralisée, un algorithme déterministe pour décider de la primalité d’un
entier n dont la complexité est polynomiale en log n.
§3.2. Factorisation
Soit N un entier tel que N > 1. Le but de ce paragraphe est de décrire quelques algorithmes permettant d’écrire la décomposition de N en facteurs premiers. Quitte à
raisonner par récurrence, il suffira parfois de produire un diviseur non trivial de N , ou
de démontrer qu’il n’en existe pas.
CHAPITRE 3. NOMBRES PREMIERS, FACTORISATION
26
A. Méthode naïve
La méthode « naïve » de factorisation d’un entier N consiste à essayer tous les diviseurs possibles, de 2 à la racine carrée de N . Pour améliorer légèrement l’algorithme,
on évite les entiers pairs (à part 2). Plus généralement, si B = ppcm(1, . . . , b), on peut
tester la divisibilité par des entiers inférieurs à b, puis pour d > b, se contenter de tester
la divisibilité par ceux qui sont premiers à B . Dans ce cas, on commence par construire
une table de ces entiers modulo B qui sont premiers à B .
pSi n est un entier, le nombre de divisions de N qu’il faudra effectuer est équivalent à
c N , avec c = 1 si on est très naïf, c = 1/2 si on évite les entiers pairs, c = ϕ(B )/B si on
évite ceux qui ont un facteur commun avec B .
Le nombre d’opérations élémentaires requis par cet algorithme est exponentiel en
la taille log2 (N ) de l’entier N .
B. Méthode ρ de Pollard (1975)
Son principe repose sur un lemme de théorie des probabilités appelé le paradoxe des
anniversaires.
L EMME 3.2.1. — Soit S un ensemble fini de cardinal N et soit (x n ) une suite de variables
aléatoires indépendantes à valeurs dans S, obéissant toutes à la loi uniforme. Soit c le
temps de première collision, défini comme le plus petit entier n tel que x n soit égal à l’une
des valeurs x 1 , . . . , x n−1 .
La probabilité que c p
> n vérifie l’inégalité P(c > n) 6 exp(−(n − 1)(n − 2)/2N ). L’espérance de c est E(c) = O( N ).
Démonstration. — La probabilité que c > n est égale à la probabilité que x 2 6= x 1 , x 3
soit différent de x 1 et x 2 , etc., x n−1 soit différent de x 1 , . . . , x n−2 . Elle est donc égale à
¶ n−2
µ
n−2
Y
Y
j
P(c > n) =
6
1−
exp(− j /N ) = exp(−(n − 1)(n − 2)/2N )
N
j =1
j =1
où l’on a utilisé l’inégalité 1 − x 6 e −x , valable pour x > 0. Puisque
∞
∞
∞
X
X
X
E(c) =
cP(c = n) =
c (P(c > n) − P(c > n + 1)) =
P(c > n),
n=1
n=1
n=1
on obtient
E(c) 6
∞
X
exp(−(n − 1)(n − 2)/2N ) 6 2 +
n=1
6 2+
∞
X
exp(−(n − 2)2 /2N )
n=3
∞ Z
X
n−2
n=3 n−3
p
6 2 + πN /2.
Z
p
exp(−x 2 /2N ) dx = 2 + 2N
∞
2
e −x d x
0
Le cas particulier N = 365 donne son nom à ce lemme : la probabilité que sur une
classe de 25 élèves, deux soient nés le même jour est au moins égale à 1 − P(c > 24) >
0,53 ; dans une classe de 35 élèves, cette probabilité est au moins égale à 0,78 !
§3.2. FACTORISATION
27
L’algorithme de Pollard consiste à produire une suite d’entiers (x n ) modulo N qui se
comporte
p comme une suite aléatoire. L’espérance du temps de première collision est
donc O( N ). En outre, si p est le plus petit facteur premier de N , la suite (x n mod p)
est aussi aléatoire,
de sorte que l’espérance du temps de première collision modulo p
p
p
4
est O( p) = O( N ). Cependant, p est inconnu de sorte qu’il est a priori impossible de
détecter une collision modulo p. On remarque alors que si x n ≡ x m (mod p), alors p
divise pgcd(x n − x m , N ) ; si x n 6≡ x m (mod N ), ce pgcd est distinct de N ; il fournit donc
un facteur non trivial de N .
p
4
Totefois,
p le calcul exhaustif de tous les pgcd(x n −x m , N ) pour m < n 6 O( N ) requérrait O( N ) opérations et rendrait cet algorithme moins efficace que celui par divisions
successives. Pour cela, on ne considère pas une suite (x n ) aléatoire, mais une suite définie par une relation de récurrence x n+1 = f (x n ) dans Z/N Z, permettant d’utiliser un
algorithme de détection de cycles. En effet, si x m+t = x m avec t > 0, on aura x s+t = x s
pour tout s > m ; vertu suprême des suites définies par récurrence !
L’algorithme couramment choisi pour ce faire est celui de F LOYD : il consiste à calculer par récurrence le couple (x n , x 2n ), par la relation
(x n+1 , x 2(n+1) = ( f (x n ), f ( f (x 2n )).
L’égalité x n = x 2n (dans l’ensemble fini S de cardinal N ) sera vérifiée dès que n > m
et que n = (2n) − n est multiple de la période t ; le plus petit entier pour lequel cela se
produit est donc compris entre m et m+t ; chaque étape requerrant 3 évaluations de f ,
nous avons donc au plus
p 3(m + t ) évaluations de f et m + t comparaisons. Si l’on peut
espérer que m + t = O( p
N ), on obtient un algorithme de détection de cycle dans S qui
requiert en moyenne O( N ) opérations.
Un algorithme un peu plus efficace est celui de B RENT. Il consiste à comparer x 2k −1
avec x n pour 2k 6 n < 2k+1 , en commençant par k = 0, puis si aucune comparaison
n’est fructueuse, en augmentant k. Si m et t sont les plus petits entiers strictement
positifs tels que x m+t = x m , la première collision détectée est donc de la forme x 2k −1 =
x 2k −1+t , où k est le plus petit entier tel que 2k − 1 > m, d’où m + 1 6 2k < 2(m + 1).
L’algorithme aura exigé 2k −1+ t 6 2m + t évaluations de f et autant de comparaisons.
Une dernière remarque permet de diviser par deux le nombre de comparaisons. On
observe en effet qu’il existe une collision de la forme x 2k −1 = x 2k −1+λt où 32 2k 6 2k − 1 +
λt < 2k+1 , c’est-à-dire 1+2k−1 6 λt 6 2k . (C’est évident si t > 2k−1 , et il suffit de choisir
λ convenablement si t < 2k−1 .)
Pour l’application à la factorisation, la fonction f choisie est souvent de la forme
x 7→ x 2 +c (mod N ), avec c = ±1. Il faut éviter c = 0 (la récurrence f (x) = x 2 est triviale)
et c = −2 (idem, en posant x = y +1/y). Il est possible que l’algorithme ne fournisse pas
de facteur non trivial ; c’est par exemple le cas si les périodes de la suite (x n ) modulo
les différents facteurs premiers de N sont égales. Dans ce cas, on change la fonction f .
Les comparaisons sont importantes car ce sont des calculs de la forme pgcd(x − y, N ).
À l’heure actuelle, on ne sait pas étudier rigoureusement la complexité de cet algorithme sans faire l’hypothèse heuristique que la suite (x n ) définie par récurrence se
comporte comme une suite aléatoire.
28
CHAPITRE 3. NOMBRES PREMIERS, FACTORISATION
C. La méthode p − 1 (Pollard)
Soit p un facteur premier de N . Soit B un entier auxiliaire majorant toute puissance
d’un nombre premier qui divise p −1 — on dira que p −1 est B -friable. Pour tout entier
a premier à N , le théorème de Fermat affirme a p−1 ≡ 1 (mod p). Par définition de B ,
p −1 dvise le ppcm M des entiers de 1 à B , si bien que a M ≡ 1 (mod p), d’où l’on déduit
que pgcd(a M − 1, N ) > 1.
En pratique, p, B sont inconnus. On teste donc ces pgcd pour des valeurs croissantes
de B et des entiers a pris au hasard. Le cas favorable est celui où 1 < pgcd(a M − 1, N ) <
N , puisqu’on obtient un diviseur de N . Si pgcd(a M − 1, N ) = 1, où M = ppcm(1, . . . , B ),
c’est que pour aucun facteur premier p de N , p −1 n’est B -friable. Si pgcd(a M −1, N ) =
N , ou bien tous les facteurs premiers p de N sont tels que p − 1 est B -friable, ou bien
l’ordre de a modulo N est trop petit.
Sa complexité est en gros O(B log B log2 N ) — le facteur B log B correspond au calcul
de a M (on a M > 2B ), le log2 N aux calculs modulo N .
On voit que cette méthode fonctionne bien si N possède un facteur premier p tel
que les puissances d’un nombre premier divisant p − 1 ne soient pas trop grandes.
Heuristiquement, on peut choisir B de l’ordre N 1/6 , la probabilité que cela fournisse
une factorisation étant de l’ordre de 1/27.
CHAPITRE 4
CORPS FINIS
§4.1. Rappels sur les corps finis
A. Caractéristique, Frobenius ; existence et unicité des corps finis
Soit F un corps fini ; notons q son cardinal. La caractéristique de F, générateur de
l’idéal de l’homomorphisme canonique de Z dans F, est un nombre premier p. Cet homomorphisme se factorise en un homomorphisme injectif de Z/pZ dans F qui permet
de considérer F comme un (Z/pZ)-espace vectoriel, de dimension nécessairement finie, disons e et l’on a q = p e .
Soit K un corps de caractéristique p. L’application σ de K dans lui-même donnée
par σ(x) = x p est un homomorphisme de corps. Seule l’additivité
¡p ¢ n’est pas évidente ;
elle résulte de la formule du binôme et de ce que les coefficients k sont multiples de p
pour 1 6 k 6 p − 1. Il est injectif comme tout homomorphisme de corps. Si K = F est
un corps fini, il est alors surjectif ; on l’appelle l’automorphisme de Frobenius.
Soit F̄ un corps algébriquement clos de caractéristique p. Soit q = p e une puissance
de p. L’ensemble Fq des éléments de F̄ vérifiant σe (x) = x (où σe = σ . . . σ est le composé
e
de e fois σ) est un sous-corps de F̄. Comme σe (x) = x p pour tout x, Fq est l’ensemble
des solutions de l’équation polynomiale x q − x = 0 dans F̄. La dérivée de ce polynôme
étant −1, ses racines sont simples ; autrement dit, Fq est un corps de cardinal q. Inversement, les éléments d’un sous-corps de cardinal q vérifient cette équation x q = x, si
bien que le corps Fq trouvé est l’unique sous-corps de cardinal q de F̄.
Si F est un corps de cardinal q, la théorie des extensions de corps apprend qu’on
peut prolonger l’homomorphisme de Z/pZ dans F̄ en un plongement de F dans F̄ ; son
image est un corps de cardinal q dans F̄ : c’est le corps Fq . En particulier, les corps K
et F sont isomorphes.
On résume ces deux paragraphes en disant qu’il existe, pour toute puissance q d’un
nombre premier, un corps fini de cardinal q et que deux tels corps sont isomorphes
(« existence et unicité des corps fini de cardinal donné »).
CHAPITRE 4. CORPS FINIS
30
B. Groupe multiplicatif
Soit encore F un corps fini ; notons p sa caractéristique, q son cardinal. Le groupe
multiplicatif de F est un groupe abélien d’ordre q − 1. Les éléments non nuls de F vérifient donc x q−1 = 1 ; les éléments de F vérifient ainsi x q = x. Le groupe multiplicatif F∗
est un groupe cyclique. Il faut démontrer que F∗ contient un élément d’ordre multiplicatif q − 1. Il y a quarante démonstrations possibles, en voilà quelques unes :
– le groupe F∗ est un groupe abélien fini, donc de la forme Z/d 1 Z × · · · × Z/d r Z, où
d 1 , . . . , d r sont des entiers strictement positifs tels que d 1 |d 2 | . . . |d r . En particulier,
d 1 . . . d r = q − 1. De plus, tout élément x de F∗ vérifie x dr = 1. Or, cette dernière
équation n’admet au plus que d r solutions, car il s’agit d’une équation polynomiale dans un corps commutatif. Conclusion : q − 1 = d 1 . . . d r 6 d r ce qui impose
r = 1 et F ∗ ' (Z/d r Z).
Q n
– soit q − 1 = `i i la factorisation de q − 1. Soit `i un facteur premier de q − 1 ;
l’équation x (q−1)/`i = 1 a au plus (q − 1)/` solutions dans F∗ , car c’est une équa(q−1)/`i
tion polynomiale. Il existe donc un élément x i ∈ F∗ tel que x i
6= 1. Posons
n
n
n −1
(q−1)/`i i
` i
` i
q−1
alors y i = x i
; on a y i i = x i = 1 mais y i i
6= 1 ; autrement dit, y i est un
n
n
élément d’ordre `i i de F∗ . Comme les entiers `i i sont premiers entre eux deux à
Q
Q n
deux, il est alors facile de vérifier que y i est un élément d’ordre `i i = q − 1 ;
∗
c’est un générateur de F .
– Étant donnés deux éléments x et y d’ordre a et b d’un groupe abélien, on peut
construire un élément z dont l’ordre est le ppcm de a et b. Par récurrence, on
en déduit l’existence d’un élément de F∗ dont l’ordre, disons m, est le plus petit
commun multiple des ordres des éléments de F∗ . Tout élément x de F∗ vérifie
x q−1 = 1 donc l’ordre d’un élément divise q − 1 et m divise q − 1. Par définition
de m, tout élément x de F∗ vérifie de plus x m = 1. Cette dernière équation n’ayant
au plus que m solutions, on a donc m = q − 1.
– On construit par récurrence sur n les polynômes cyclotomiques Φn ∈ Z[X ], reQ
liés par la formule X n − 1 = d |n Φd (X ). Les racines de X n − 1 dans un corps K
de caractéristique ne divisant pas n sont simples, ce sont les racines n-ièmes de
l’unité. En particulier, les racines de Φn dans un tel corps sont simples et sont
les racines n-ièmes de l’unité qui ne sont pas racines d’un polynôme Φd , pour
d |n et d 6= n, donc les racines primitives n-ièmes de l’unité. Ce sont les éléments
d’ordre n dans K . En prenant pour corps K le corps des nombres complexes, on
voit que deg(Φn ) est l’indicateur d’Euler ϕ(n). Prenons maintenant pour corps K
le corps fini F et posons n = q − 1. Tout élément de F∗ est racine d’un des Φd , pour
d divisant n, mais les racines des polynômes Φd pour d |n et d 6= n ne fournissent
qu’au plus n − ϕ(n) racines. Autrement dit, Φn possède des racines dans F ; une
telle racine est une racine primitive n-ième de l’unité, donc un générateur de F∗ .
Cet argument montre qu’en fait, pour tout entier d divisant q − 1, le polynôme Φd
est scindé dans F.
Les deux dernières méthodes fournissent des méthodes pratiques efficaces, pourvu
qu’on connaisse une factorisation de q − 1.
§4.2. POLYNÔMES À COEFICIENTS DANS UN CORPS FINI
31
C. Constructions de corps finis
Soit F un corps fini de cardinal q = p e . Le corps F possède des éléments primitifs,
c’est-à-dire des éléments x tels que F = Fp [x]. On peut par exemple prendre un générateur du groupe multiplicatif F∗ (tout élément non nul est alors une puissance de x, a
fortiori un polynôme en x à coefficients dans Z/pZ). Le polynôme minimal de x est de
degré e.
En particulier, le polynôme minimal d’un générateur quelconque du groupe multiplicatif F∗ est de degré e. Les facteurs irréductibles sur (Z/pZ) du polynôme cyclotomique Φq−1 sont donc tous de même degré e. (Cela implique au passage que ϕ(q e − 1)
est multiple de e.)
Pour construire explicitement un corps fini de cardinal p e , on peut à l’inverse exhiber un polynôme irréductible f de degré e à coefficients dans Z/pZ. L’algèbre F =
(Z/pZ)[x]/( f (x)) sera alors un corps, et de dimension e sur (Z/pZ), donc de cardinal p e .
§4.2. Polynômes à coeficients dans un corps fini
A. Rappels sur le calcul de pgcd
Le pgcd de deux polynômes à coefficients dans un corps se calcule par l’algorithme
d’Euclide. (L’algorithme d’Euclide étendu fournit en outre une relation de Bézout.)
Il convient de faire quelques remarques sur la façon de mener ces algorithmes et
leur complexité.
Chaque étape de l’algorithme requiert de calculer le reste r de la division euclidienne d’un polynôme a par un polynôme b. La méthode naïve enseignée à l’école fait
successivement décroître le degré de a d’une unité et requiert (deg(a) − deg(b)) deg(b)
multiplications dans le corps F.
On peut raisonner autrement et considérer qu’il s’agit de calculer l’image par a de
la classe de x dans F[x]/(b). Si a = x m , l’algorithme d’exponentiation rapide requiert
2 log2 (m) multiplications dans F[x]/(b). In fine, et en multipliant naïvement dans
F[x]/(b), on a besoin d’en gros log(deg(a))w(a) deg(b)2 multiplications dans F, où
w(a) désigne le nombre de monômes non nuls de a. C’est comme cela qu’il faut
procéder si a n’a que peu de monômes, notamment si a est de la forme x q − x : la
comparaison de log(q) deg(b)2 et q deg(b) est sans appel !
B. Critères d’irréductibilité
Soit F un corps fini de cardinal q et soit f ∈ F[x] un polynôme de degré n. Il s’agit
pour l’instant de décider si f est irréductible ou non.
B.1. Élimination des facteurs multiples. — Le premier pas consiste à détecter les facteurs multiples en dérivant.
Un polynôme g tel que g 0 = 0 est un polynôme en x p ; comme tout élément de F
est une puissance p-ième, chacun des monômes de g est une puissance de p, donc g
aussi. En particulier, g n’est pas irréductible. Dans l’autre sens, la dérivée d’un polynôme irréductible est non nulle.
32
CHAPITRE 4. CORPS FINIS
Q
e
Notons f = ri=1 f i i la décomposition de f en facteurs irréductibles. Supposons f 0 6=
0, de sorte qu’au moins un des e i n’est pas multiple de p. Dans la décomposition
f0=
r
X
i =1
e i −1 0
fi
ei fi
Y
j 6=i
ej
fj ,
le polynôme f i apparaît avec multiplicité e i dans chacun des termes d’indice j 6= i ; il
apparaît avec multiplicité e i − 1 dans le terme d’indice i si e i n’est pas multiple de p.
En comparant avec f , on voit donc que
pgcd( f , f 0 ) =
r
Y
i =1
p -e i
e i −1
fi
r
Y
i =1
p|e i
e
fi i .
Par suite, g 1 = f / pgcd( f , f 0 ) est le produit des facteurs irréductibles f i pour lesquels e i
n’est pas multiple de p.
On peut réitérer le procédé avec f /g 1 qui a la même décomposition en facteurs irréductibles que f , les exposants non multiples de p ayant diminué de 1. On obtient alors
le produit g 2 des facteurs irréductibles f i pour lesquels e 1 > 2 mais ni e i (e i − 1) n’est
pas multiple de p.
Au bout de p − 1 opérations, l’exposant de f i dans la décomposition de f /g 1 . . . g p−1
est le plus grand multiple de p inférieur ou égal à e i . Ce polynôme est donc la puissance p-ième d’un polynôme h qu’on peut déterminer explicitement et avec lequel on
continue.
P ROPOSITION 4.2.1. — Pour que f soit irréductible, il faut et il suffit que les polynômes
e
x q − x et f , pour 1 6 e < n, soient premiers entre eux.
Démonstration. — Soit ξ une racine de f dans une clôture algébrique F̄ de F. Son polynôme minimal g est irréductible et divise f , donc est un facteur irréductible de f . En
outre, le corps F[ξ] engendré par ξ est un corps fini de cardinal q e , où e = deg(g ). Il en
e
e
résulte que ξq = ξ, autrement dit les polynômes x q − x et f ont une racine commune
dans F̄. Cela entraîne que leur pgcd n’est pas égal à 1.
e
Inversement, si f et x q − x ont un facteur irréductible commun, celui-ci sera de
degré au plus e, donc distinct de f si e < n.
On peut généraliser ce résultat pour obtenir une factorisation de f en un produit de
polynômes f e , chaque facteur irréductible de f e étant de degré e. Pour simplifier, on
suppose que f est sans facteur multiple.
P ROPOSITION 4.2.2. — Soit f ∈ F[x] un polynôme sans facteur multiple. Posons g 0 =
e
f ; pour e > 1, posons f e = pgcd(x p − x, g e−1 ) et g e = g e−1 / f e . On a f = f 1 f 2 . . . et pour
tout e > 1, chaque facteur irréductible de f e est degré e.
Démonstration. — Fixons pour la démonstration une clôture algébrique de F et notons Fq e l’unique sous-corps de F de cardinal Fq e .
Comme dans la démonstration précédente, les racines de f 1 sont les racines de f
qui appartiennent à Fq . Comme les racines de f sont simples, il en est de même de
§4.2. POLYNÔMES À COEFICIENTS DANS UN CORPS FINI
33
celles de f 1 et le polynôme f 1 est le produit des facteurs linéaires qui divisent f . Les
racines de f 2 sont les racines de g 1 = f / f 1 qui appartiennent à Fq 2 ; ce sont donc les
racines de f qui appartiennent à Fq 2 mais pas à Fq (ces dernières sont racines de f 1 et
ne sont plus racines de g 1 car les racines de f sont simples). Par récurrence, les racines
de f e sont les racines de f qui appartiennent à Fq e mais à aucun des corps Fq r pour
1 6 r < e ; l’extension de Fq engendrée par une telle racine est Fq e , si bien que son
polynôme minimal est de degré e.
Le dernier critère, dû à B ERLEKAMP, fournit le nombre de facteurs irréductibles de f .
P ROPOSITION 4.2.3. — Notons n le degré de f ; pour 1 6 e < n, soit g e le reste de la
division euclidienne du polynôme x qe − x e par f . Soit k le rang du sous-espace de F[x]
engendré par les polynômes g 1 , . . . , g n−1 . Le nombre de facteurs irréductibles distincts
de f est égal à n − k.
Avant de démontrer cette proposition, insistons sur le fait que pour calculer en pratique les g e , il importe de calculer x q dans F[x]/( f ) à l’aide de l’algorithme d’exponentiation rapide puis calculer ses puissances.
Démonstration. — Soit A l’algèbre F[x]/( f ) et munissons-la de la base (1, x, . . . , x n−1 ).
Soit σ l’application de A dans elle-même donnée par σ(a) = a q . C’est un homomorphisme d’algèbres. On a par définition 0 = σ(1) − 1 et g e = σ(x e ) − x e pour 1 6 e < n.
La proposition équivaut donc à l’énoncé : le noyau de σ−id est un F-espace vectoriel de
dimension égale au nombre r de facteurs irréductibles de f .
Notons B le noyau de σ − id. C’est l’ensemble des éléments a ∈ A tels que σ(a) = a ;
c’est donc une sous-algèbre de A qu’on appelle la sous-algèbre de Berlekamp de A.
Nous allons montrer qu’elle est isomorphe à Fr .
Écrivons la décomposition de f en produits de facteurs irréductibles, f = f 1 . . . f r . Ils
sont premiers entre eux deux à deux ; d’après le lemme chinois, l’algèbre A est donc isoQ
q
q
morphe à ri=1 F[x]/( f i ) et σ s’identifie à l’endomorphisme (a 1 , . . . , a r ) 7→ (a 1 , . . . , a r ).
Par suite, l’image de B par l’isomorphisme chinois est l’ensemble des (a 1 , . . . , a r ) tels
q
que a i = a i pour tout i . Comme f i est irréductible, F[x]/( f i ) est un corps fini de carq
dinal q deg( f i ) et l’ensemble des a i ∈ F [x]/( f i ) tels que a i = a i est le sous-corps à q
éléments, c’est-à-dire F. Autrement dit, l’image de B est l’algèbre F × . . . F ; elle est de
dimension r sur F.
C. Algorithme de C ANTOR -Z ASSENHAUS (1981)
Il s’agit maintenant, étant donné un polynôme f à coefficients dans un corps fini F,
supposé sans racines multiples, de le factoriser. On suppose que tous ses facteurs irréductibles sont de même degré, ce qui est loisible compte tenu des résultats du paragraphe précédent.
Notons f = f 1 . . . f r la factorisation de f et e le degré des f i , de sorte que n = deg( f ) =
er . L’algèbre A = F[x]/( f ) est isomorphe à (Fq e )r .
L EMME 4.2.4. — Soit K un corps fini de cardinal q.
34
CHAPITRE 4. CORPS FINIS
Supposons q impair. L’application u 7→ u (q−1)/2 de K dans lui-même prend une fois la
valeur 0 (pour u = 0), (q −1)/2 fois la valeur 1 (lorsque u est un carré non nul) et (q −1)/2
fois la valeur −1 (sinon).
2
n−1
Supposons que q = 2n est une puissance de 2. L’application u 7→ u+u 2 +u 2 +· · ·+u 2
de K dans lui-même prend 2n−1 fois la valeur 0 et 2n−1 fois la valeur 1.
Démonstration. — Notons ϕ cette application.
Dans le cas où q est impair, on a ϕ(u)2 = 1 si u 6= 0 et ϕ(u) = 0 sinon ; par suite, ϕ(u)
vaut ±1 ou 0. Comme ϕ est une application polynomiale de degré (q − 1)/2, elle prend
au plus (q − 1)/2 fois les valeurs −1 et 1, donc exactement (q − 1)/2 fois. (En fait, ϕ(u)
est le symbole de Legendre de u, qui vaut 1 si u est un carré non nul, 0 si u = 0 et −1
dans les autres cas.)
Lorsque q est une puissance de 2, on a
2
n
n
ϕ(u)2 = u 2 + u 2 + · · · + u 2 = ϕ(u) + u 2 − u = ϕ(u).
Par conséquent, ϕ(u)(ϕ(u) − 1) = 0 et ϕ(u) vaut 0 ou 1. En outre, ϕ prend au plus
2n−1 fois chaque valeur, donc exactement 2n−1 fois la valeur 0 et 2n−1 fois la valeur 1.
P ROPOSITION 4.2.5. — Soit F un corps fini de cardinal q, soit f ∈ F[x] un polynôme
sans facteur carré dont tous les facteurs irréductibles sont de degré e.
a) Supposons que q soit impair.
Soit g un polynôme non nul de degré < n et soit h le reste de la division par f du
e
polynôme g (q −1)/2 . Alors, f est le produit de pgcd( f , h), pgcd( f , h − 1) et pgcd( f , h + 1).
En outre, parmi les q n − 1 polynômes possibles g , seuls 2((q e − 1)/2)r fournissent une
factorisation triviale.
b) Supposons que q = 2m soit une puissance de 2. Soit g un polynôme de degré < n et
em−1
soit h le reste de la division par f du polynôme g + g 2 +· · ·+ g 2
. Alors, f est le produit
de pgcd( f , h) et de pgcd( f , h − 1).
En outre, parmi les q n polynômes possibles g , seuls 2(2em−1 )r fournissent une factorisation triviale.
Lorsque q est impair, la probabilité d’obtenir une factorisation triviale est donc égale
à
21−r
(q e − 1)r
6 21−r .
q er −1
Lorsque q est une puissance de 2, elle est encore 21−r . Par conséquent, si r > 2, on peut
espérer, en tirant des polynômes g au hasard, factoriser f très rapidement. (1) Il est
cependant possible de n’avoir trouvé aucun facteur non trivial au bout de 1000 essais,
mais la probabilité est de l’ordre de 21000(1−r ) , donc ridiculement faible.
1. Si r = 1, cette probabilité est égale à 1, comme il se doit.
§4.2. POLYNÔMES À COEFICIENTS DANS UN CORPS FINI
35
Démonstration. — Notons A l’algèbre F[x]/( f ) ; comme f est produit de r polynômes
irréductibles de degré e, deux à deux distincts, le théorème chinois entraîne que A est
isomorphe à K r , où K est un corps à q e éléments.
Étant donné un polynôme g de degré < n, identifié à un élément de A, donc
à une famille (u 1 , . . . , u r ) d’éléments de K , le calcul de l’énoncé revient à celui de
(ϕ(u 1 ), . . . , ϕ(u r )) dans K r , où ϕ est l’application du lemme précédent. Par suite,
ϕ(u i ) ∈ {0, 1, −1} dans le cas où q est impair, et ϕ(u i ) ∈ {0, 1} quand q est une puissance
de 2. Cela revient à dire que h ≡ ϕ(u i ) (mod f )i , donc que h est multiple des polynômes f i tels que ϕ(u i ) = 0, h − 1 est multiple des polynômes f i tels que ϕ(u i ) = 1, et
h + 1 est multiple des polynômes f i tels que ϕ(u i ) = −1. Comme les f i sont premiers
entre eux deux à deux, h, h − 1 et h + 1 sont en fait multiples des produits correspondants. (Ce dernier polynôme n’intervient pas lorsque q est une puissance de 2.) La
première partie de l’énoncé en découle immédiatement.
Pour la seconde, il s’agit de dénombrer les familles (u 1 , . . . , u r ) tels que (ϕ(u 1 ), . . . , ϕ(u r ))
soit (0, . . . , 0), (1, . . . , 1) ou (−1, . . . , −1). On trouve exactement les valeurs indiquées.
Le cas particulier d’un polynôme scindé dans F est très important. C’est en effet à
lui qu’on se ramène dans l’algorithme de B ERLEKAMP exposé ci-dessous, c’est aussi ce
qui se passe pour un polynôme de petit degré.
P ROPOSITION 4.2.6. — Soit F un corps fini de cardinal q et soit f ∈ F[x] un polynôme
de degré n sans facteur carré qui est scindé dans F.
a) Supposons q impair. Pour a ∈ F, posons h a = (x + a)(q−1)/2 (mod f ). Alors f est le
produit de pgcd(h a , f ), pgcd(h a − 1, f ) et pgcd(h a + 1, f ). En outre, au plus la moitié des
valeurs de a fournit une factorisation triviale.
b) Supposons que q = 2m est une puissance de 2. Pour a ∈ F∗ , posons h a = (ax) +
m−1
(ax)2 +· · ·+(ax)2 . Alors, f est le produit de pgcd(h a , f ) et de pgcd(h a −1, f ). En outre,
au plus la moitié des valeurs de a fournit une factorisation triviale.
Dans les deux cas, la probabilité, tirant a au hasard, d’obtenir une factorisation triviale est donc inférieure ou égale à 1/2.
Démonstration. — Notons x 1 , . . . , x n les racines de f dans F.
Étudions d’abord le cas où q est impair. Dire que a fournit une factorisation
triviale, signifie que x i − a est identiquement nul, carré ou non carré lorsque i
parcourt {1, . . . , n}. Autrement dit, les « mauvaises » valeurs de a sont celles pour lesquelles x i − a est non nul, et toujours carré ou non carré. En particulier, l’élément
(x 2 − a)/(x 1 − a) de F ∪ {∞} doit toujours être non carré (∞ étant considéré comme
un carré). Comme a 7→ (x 2 − a)/(x 1 − a) est une homographie, c’est une application
bijective de F ∪ {∞} et au plus (q − 1)/2q valeurs de a sont mauvaises.
Le cas où q est une puissnace de 2 est analogue. Soit S l’ensemble des 2m−1 solutions
m−1
(dans F) de l’équation ϕ(u) = u +u 2 +·+u 2
; c’est un sous-groupe de F car ϕ(u +v) =
ϕ(u) + ϕ(v). En outre, h a (x i ) vaut 0 si ax i appartient à S et vaut 1 sinon. En particulier,
si a(x 2 − x 1 ) 6∈ S, ax 1 et ax 2 n’appartiennent pas tous deux à S, h a (x 1 ) 6= h a (x 2 ), donc
l’une des racines, x 1 et x 2 , est racine de pgcd(h a , f ) tandis que l’autre est racine de
36
CHAPITRE 4. CORPS FINIS
pgcd(h a −1, f ). Ainsi, la factorisation n’est triviale que dans au plus (2m−1 −1) cas, c’està-dire moins de la moitié.
D. Algorithme de B ERLEKAMP (1970)
Revenons au problème de la factorisation d’un polynôme f de degré n, à coefficients dans un corps fini F de cardinal q, supposé sans racines multiples. Notons
encore A l’algèbre F[x]/( f ) et B la sous-algèbre de Berlekamp, noyau de l’endomorphisme d’espaces vectoriel a 7→ a q − a. Par l’algèbre linéaire (algorithme de Gauss,
ou de Gauss-Jordan), on peut en trouver une F-base b 1 , . . . , b r représentée par des
polynômes de F[x] de degrés < n.
Q
Si f = ri=1 f i , le théorème chinois identifie A au produit K 1 . . . K r des corps finis
F[x]/( f i ) et identifie B à la sous-algèbre Fr .
Soit b un élément de B . Par définition, il existe pour tout i ∈ {1, . . . , r } un unique
élément ϕi (b) ∈ F tel que b ≡ ϕi (b) (mod f )i . Alors, f i est un facteur de b − ϕi (b) si
bien que la connaissance des ϕi (b) permet de factoriser f . De fait, on a la formule
Y
f =
pgcd( f , b − u).
u∈F
Pour que l’on obtienne une factorisation non triviale, il faut et il suffit que les ϕi (b)
ne soient pas tous égaux, c’est-à-dire que b n’appartienne pas à la sous-algèbre diagonale F de B . Toutefois, la formule donnée est totalement inutilisable dans les applications pratiques où le cardinal q de F est très grand ; en effet elle suppose de calculer q
pgcd, ce qui est prendra bien trop de temps.
Il se pose donc la question de déterminer efficacement les ϕi (b). On s’inspire pour
cela de l’argument déjà utiliser dans l’algorithme de Cantor-Zassenhaus.
Supposons d’abord q impair. Comme b q − b est multiple de f , on a l’égalité
f = pgcd( f , b (q−1)/2 − 1) pgcd( f , b (q−1)/2 + 1) pgcd( f , b).
Il s’agit de voir à quelle probabilité cette factorisation est non triviale.
Observons que pour tout i , ϕi (b)(q−1)/2 vaut 0, 1 ou −1. Il s’agit de trouver b de sorte
que ces valeurs ne soient pas toutes égales. Si b est choisi au hasard dans B ' Fr , distinct d’un élément de F, ϕi (b)(q−1)/2 vaut (1, . . . , 1) si et seulement si tous les ϕi (b) sont
des carrés non nuls, (−1, . . . , −1) si et seulement aucun des ϕi (b) n’est un carré. Il y a
donc 2((q − 1)/2)r − (q − 1) tels choix. En dehors de ces choix, la factorisation n’est pas
triviale, ce qui arrive avec une probabilité au moins égale à 21−r .
Pour résumer, la méthode est la suivante : calculer une base de l’espace vectoriel
des polynômes Q ∈ F[x] de degrés < n tels que Q q ≡ Q (mod f ), espace identifié à B
et dont on note r la dimension ; choisir un élément Q au hasard dans B puis calculer
le pgcd de Q (q−1)/2 − 1 avec f d’où, avec probablité au moins 1 − 21−r , un facteur non
trivial de f .
D.1. Remarques. — 1) Continuons l’analyse de l’algorithme de B ERLEKAMP.
La multiplication par b dans la F-algèbre A agit comme la multiplication par ϕi (b)
dans le facteur K i . Par suite, cet endomorphisme µb est diagonalisable et son polynôme minimal P b est celui dont les ϕi (b) sont les racines (chacune avec multiplicité 1).
§4.3. EXTRACTION DE RACINES m-IÈMES
37
On le détermine en cherchant une relation de dépendance linéaire entre 1, b, . . . , b r
dans B . Autrement dit, si l’on sait déterminer les racines d’un polynôme scindé, on
connaît les ϕi (b), donc on peut factoriser le polynôme initial.
En faisant en outre l’analyse précise de la complexité du calcul de P b , cela montre
que le problème de la factorisation dans un corps fini se ramène en temps polynomial
à celui de la détermination des racines d’un polynôme scindé.
2) En général, on ne connaît pas d’algorithme non probabiliste pour factoriser un
polynôme de degré n à coefficients dans un corps fini de cardinal q, dont la complexité
soit polynomiale en n log q.
Pour les équations de la forme x 2 = a, S CHOOF puis P ILA ont en revanche exhibé un
tel algorithme. L’expliquer nous entraînerait largement au delà du niveau de l’agrégation. J’ai l’impression que cela s’étend aux équations de la forme x n = a.
§4.3. Extraction de racines m-ièmes
A. Généralités
Supposons qu’on ait à extraire une racine m-ième dans un corps fini F de cardinal q,
c’est-à-dire à trouver les racines dans F du polynôme x m − a, où m > 1 et a ∈ F∗ . Cherchons plus généralement à factoriser ce polynôme.
Pour commencer, calculons le pgcd de x q − x avec le polynôme x m − a. Si q = um +
v (0 6 v < m) est la division euclidienne de q par m, on a x q ≡ ax q−m ≡ · · · ≡ a u x v
(mod x m − a) (mais le calcul par exponentiation rapide est bien sûr plus... rapide.) On
trouve donc
(
a bq/mc x v − x
si q 6≡ 1 (mod m) ;
q
¡
¢
x −x ≡
(q−1)/m
a
− 1 x si q ≡ 1 (mod m).
Dans le premier cas, l’application x 7→ x m de F∗ dans lui-même est un automorphisme
de groupes, le polynôme x m − a est scindé dans F.
B. Algorithmes évidents
Dans certains cas, il est très facile de calculer une racine m-ième, par un simple
calcul de puissances. Supposons que m divise q −1 et que a (q−1)/m = 1. Pour que a n soit
une racine m-ième de a, c’est-à-dire a nm = a, il suffit que nm ≡ 1 modulo (q − 1)/m,
Dans le cas particulier où (q −1)/m est premier à m, il suffit de prendre pour n l’inverse
de m modulo (q − 1)/m et de calculer a n .
Un cas particulier intéressant concerne les racines carrées, soit m = 2. La condition
est que (q − 1)/2 soit impair, c’est-à-dire q ≡ 3 (mod 4). Dans ce cas, on obtient une
racine carrée de a en calculant a (q+1)/2 .
C. Tonelli (1891)–Shanks (1973)
Cet algorithme probabiliste concerne la détermination de racines carrées dans un
corps fini F à q éléments (q impair). Il requiert la connaissance d’un générateur du
sous-groupe de 2-Sylow de F∗ , c’est-à-dire un élément ξ d’ordre 2e , où e est l’exposant
e
de 2 dans q −1. Écrivons q −1 = 2e r , avec r impair. Alors, par l’application x 7→ (x r , x 2 ),
38
CHAPITRE 4. CORPS FINIS
le groupe F∗ se décompose en produit de deux groupes cycliques, l’un G d’ordre 2e
engendré par ξ, l’autre H d’ordre r . La bijection réciproque est donnée par (x, y) 7→
x u y v , où u et v sont des entiers tels que r u + 2e v = 1.
Les deux groupes G et H sont stables par élévation au carré, et il faut essentiellement
calculer les racines carrées dans chacun de ces deux groupes.
Dans H , d’ordre impair, l’élévation au carré est bijective et le calcul d’une racine
carrée est évidente : il suffit d’élever à la puissance (r + 1)/2.
Supposons maintenant que l’on cherche une racine carrée dans G d’un élément x
de G. On écrit x = ξu , avec 0 6 u < 2e et l’on va déterminer le développement binaire
de u par récurrence : u = u 0 + 2u 1 + · · · + 2e−1 u e−1 . Dire que x est un carré revient à la
relation u 0 = 0 ; une racine carrée sera alors ξv , où v = u 1 + 2u 2 + · · · + 2e−2 u e−1 — on
peut éventuellement ajouter 2e−1 , cela fournira l’autre racine carrée.
e−1
e−1
e−1
On a ξ2 = −1. Comme x est un carré, on a 1 = x 2 = ξ2 u0 = (−1)u0 , d’où u 0 = 0
e−1
e−2
comme prévu. Si e < 2, on s’arrête. Sinon, on a x 2 = 1, donc x 2 = ±1 et on remarque
e−2
e−1
e−2
que x 2 = ξ2 u1 = (−1)u1 ; on aura donc u 1 = 0 ou u 1 = 1 suivant que x 2 = 1 ou −1.
´2e−t
³
e−t
t −1
Supposons déterminés u 0 , . . . , u t −1 et t < e de sorte que x 2 = ξu0 +2u1 +···+2 u t −1
.
Alors,
³
´2e−t −1
e−t −1
t −1
x2
= ± ξu0 +2u1 +···+2 u t −1
donc on pose u t = 0 ou 1 suivant que le signe de la relation précédente est + ou −. On
a donc
³
´2e−t −1
2e−t −1
u 0 +2u 1 +···+2t −1 u t −1 +2t u t
x
=± ξ
.
Lorsque t + e = 1, on obtient u 0 , . . . , u e−1 , d’où une racine carrée de x.
Il n’est cependant pas besoin de découper explicitement le calcul dans les deux
groupes G et H . Dans les calculs précédents, on pose x = a r , ce qui fournit encore
u 0 , . . . , u e−1 , les racines carrées de a étant alors égales à
±a s ξu1 +2u2 +... ,
où s est choisi blah blah blah.
Si e = 1, c’est-à-dire si q est congru à 3 modulo 4, on peut poser ξ = −1 et l’algorithme
est essentiellement équivalent au précédent.
D. Cipolla (1903)
Cet algorithme probabiliste concerne la détermination de racines carrées dans un
corps fini F à q éléments (q impair).
Soit a ∈ F qui est un carré, c’est-à-dire tel que a (q−1)/2 = 1. On suppose que l’on
connaît un élément t ∈ F tel que t 2 − a ne soit pas un carré ; le moyen le plus simple
de procéder consiste à tirer t au hasard, car environ une valeur sur deux convient. (En
effet, si a = α2 , t 2 − a = f (t )(t + a)2 , où f (t ) = (t − a)/(t + a) ; l’homographie f est une
bijection de F ∪ {∞}, donc ses valeurs sont (q + 1)/2-fois un carré, et (q − 1)/2-fois pas
un carré.)
Le polynôme P = X 2 − t 2 + a est alors irréductible dans F[X ] et l’algèbre K =
F[X ]/(X 2 − t 2 + a) est un corps de cardinal q 2 . Soit ω la classe de X dans K ; on a
§4.3. EXTRACTION DE RACINES m-IÈMES
39
ω2 = t 2 − a. On remarque que pour u, v ∈ F, u q = u, v q = v, mais ωq est l’autre racine
de P , donc ωq = −ω. Par suite, (u + vω)q = u q + v q ωq = u − vω. On a donc
¡
¢2
a = t 2 − ω2 = (t + ω)(t − ω) = (t + ω)(t + ω)q = (t + ω)(q+1)/2 .
Autrement dit, (t + ω)(q+1)/2 est une des deux racines carrées de a ; c’est un élément
de F.
Du point de vue pratique, cette puissance est calculée par exponentiation rapide en
utilisant la règle de clacul ω2 = a − t 2 . On obtient un élément de la forme u + vω, où,
nécessairement, v = 0.
TABLE DES MATIÈRES
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1. Nombres entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
§1.1. Représentation des entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Numération, 5 ; Conversion d’une base à une autre, 5 ; Taille des données, 6.
§1.2. Les quatre opérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Addition et soustraction, 7 ; Multiplication, 7 ; Division euclidienne, 7 ;
Exponentiation, 9.
5
5
2. Algorithme d’Euclide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
§2.1. L’algorithme d’Euclide étendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anneaux euclidiens, 11 ; L’algorithme d’Euclide étendu, 12 ;
Groupe spécial linéaire, 13 ; Application au calcul modulaire, 13.
§2.2. Complexité de l’algorithme d’Euclide pour les entiers . . . . . . . . . . . . . . . . . . . . . .
§2.3. Complexité dans le cas des polynômes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Une première majoration, 15 ; Explosion des coefficients et
normalisations, 15 ; Une majoration du résultat, 15.
7
11
11
13
15
3. Nombres premiers, factorisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
§3.1. Nombres premiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Définition, crible d’Ératosthène, 17 ; Test de divisibilité, 18 ;
Témoins de primalité ou de non-primalité ; algorithmes probabilistes, 18 ;
Critère de Fermat, 19 ; Critère de Lucas, 20 ; Test de Miller-Rabin, 24.
§3.2. Factorisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Méthode naïve, 26 ; Méthode ρ de Pollard (1975), 26 ; La méthode p − 1
(Pollard), 28.
4. Corps finis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
§4.1. Rappels sur les corps finis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Caractéristique, Frobenius ; existence et unicité des corps finis, 29 ;
Groupe multiplicatif, 30 ; Constructions de corps finis, 31.
42
TABLE DES MATIÈRES
§4.2. Polynômes à coeficients dans un corps fini . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Rappels sur le calcul de pgcd, 31 ; Critères d’irréductibilité, 31 ;
Algorithme de C ANTOR-Z ASSENHAUS (1981), 33 ; Algorithme de B ERLEKAMP
(1970), 36.
§4.3. Extraction de racines m-ièmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Généralités, 37 ; Algorithmes évidents, 37 ; Tonelli (1891)–Shanks (1973), 37 ;
Cipolla (1903), 38.
Téléchargement