CHAPITRE X
Arithm´
etique du groupe Z×
n
On two occasions I have been asked by members of Parliament,
‘Pray, Mr. Babbage, if you put into the machine wrong figures,
will the right answers come out?’ I am not able rightly to apprehend
the kind of confusion of ideas that could provoke such a question.
Charles Babbage (1792-1871)
Ce chapitre consid`ere l’anneau quotient Zn=Z/nZet plus particuli`erement le groupe multiplicatif
Z×
ndes ´el´ements inversibles. Ce groupe se r´ev´elera tr`es important dans les applications des chapitres sui-
vants, qui s’appuient sur la structure de Z×
pavec ppremier. Dans le souci d’une impl´ementation efficace,
ce paragraphe d´eveloppe quelques algorithmiques sp´ecifiques `a cet objet. Le projet discutera les r´esidus
quadratiques et le symbole de Jacobi, dont le calcul est similaire `a l’algorithme d’Euclide.
Sommaire
1. Structure du groupe Z×
n.1.1. Structure du groupe Z×
n. 1.2. D´eterminer l’ordre d’un ´el´ement.
2. Algorithmes probabilistes. 2.1. Recherche d’une racine carr´ee de 1 modulo p. 2.2. Recherche
d’un ´el´ement d’ordre qemodulo p. 2.3. Recherche d’une racine primitive modulo p.
1. Structure du groupe Z×
n
On s’int´eressera dans la suite `a l’anneau Znet plus particuli`erement `a Z×
n, le groupe multiplicatif des
´el´ements inversibles dans Zn. Le cas d’un nombre premier se r´ev`ele le plus important :
Proposition 1.1. Pour tout nombre naturel n les trois conditions suivantes sont ´
equivalentes :
(1) Le nombre n est premier.
(2) L’anneau Znest un corps.
(3) Le groupe Z×
nest d’ordre n1.
Exercice/M 1.2. Montrer l’´enonc´e pr´ec´edent. Rappeler le th´eor`eme de Lagrange sur l’ordre d’un ´el´ement
(ou d’un sous-groupe) dans un groupe fini donn´e. En d´eduire le r´esultat suivant :
Corollaire 1.3 (Petit th´eor`eme de Fermat).Si p est premier, alors tout x Z×
pv´
erifie xp1=1. En multi-
pliant par x on obtient la formule xp=x, qui est valable pour tout x Zp. Autrement dit, ´
etant donn´
e un
nombre premier p, tout entier x Zv´
erifie xpx(mod p).
Exercice/M 1.4. V´erifier que pour ppremier et xZ×
pon pourrait calculer l’inverse x1par la puissance
xp2. Estimer la complexit´ede ce calcul en utilisant la puissance dichotomique.Cette m´ethode est-elle plus
rapide que l’inversion via Euclide-B´ezout? Est-elle aussi g´en´erale et facile `a appliquer?
´
Etant donn´e un nombre premier pil existe en g´en´eral plusieurs groupes ab´eliens non isomorphes
d’ordre p1. (Voir la classification des groupes ab´eliens finis `a la fin du projet IX.) Miraculeusement la
structure du groupe Z×
pest toujours la plus simple qui soit :
Th´
eor`
eme 1.5. Pour tout nombre premier p le groupe multiplicatif Z×
pest cyclique d’ordre p1, c’est-`
a-
dire qu’il existe gZ×
ptel que Z×
p=hgi={g1,g2,...,gp1=1}. Un tel ´
el´
ement g est appel´
e un g´en´erateur
de Z×
pou une racine primitive modulo p.
Exercice/M 1.6. Montrer ce th´eor`eme en d´etaillant l’esquisse suivante :
ESQUISSE DE PREUVE. Comme Zpest un corps, le groupe Z×
pest d’ordre n=p1. Soit n=
qe1
1···qek
kla d´ecomposition en facteurs premiers. Le polynˆome Xn/qi1 poss`ede au plus n/qiracines dans
le corps Zp. Il existe alors un ´el´ement ziZ×
ptel que zn/qi
i6=1. Par cons´equent gi= (zi)n/qei
iest d’ordre
qei
i. Les ordres qe1
1,...,qek
k´etant premiers entre eux, on conclut que le produit g=g1···gkest d’ordre
n=qe1
1,...,qek
k, comme souhait´e.
175
176 Chapitre X Arithm´etique du groupe
Z×
n
Exemple 1.7. Vous pouvez v´erifier `a la main que Z×
5est engendr´e par 2 (et 3), et que Z×
7est engendr´e par
3 (et 5). Essayez de trouver des racines primitives pour des nombres premiers suivants.
Remarque 1.8. Soulignons que le th´eor`eme assure l’existence d’une racine primitive modulo psans en
expliciter aucune. Effectivement, on ne connaˆıt pas de formule miracle pour trouver une racine primitive
de Z×
p. En particulier la valeur de la plus petite racine primitive modulo preste myst´erieuse; il nous ne
reste que le tˆatonnement par essais successifs. Ceci dit, on traduira dans la suite la preuve d’existence en
une m´ethode efficace pour chercher une racine primitive.
Remarque 1.9. Une fois on a trouv´e une racine primitive de Z×
pon les connaˆıt toutes : toute racine primi-
tive gZ×
pinduit un isomorphisme
φ
:Zp1
Z×
p,k7→ gk, et r´eciproquement tout tel isomorphisme
φ
correspond au choix d’une racine primitive g=
φ
(1). D’un cot´e xZ×
pest une racine primitive ssi xest
un g´en´erateur du groupe Z×
p. De l’autre cot´e kZp1est un g´en´erateur ssi kest inversible, c’est-`a-dire
kZ×
p1. Ainsi l’isomorphisme
φ
´etablit une bijection entre Z×
p1et les racines primitives de Z×
p.
1.1. Structure du groupe Z×
n.Le th´eor`eme pr´ec´edent donne la structure de Z×
ppour ppremier.
On peut ensuite s’interroger sur la structure de Z×
npour un entier n2 quelconque. Ce probl`eme se
simplifie consid´erablement en appliquant le th´eor`eme des restes chinois : On d´ecompose n=pe1
1···pek
k
avec p1<··· <pkpremiers et e1,...,ek1. Le th´eor`eme chinois fournit un isomorphisme d’anneaux
Zn
=Zpe1
1× · ·· × Zpek
k. On en d´eduit un isomorphisme de groupes Z×
n
=Z×
pe1
1× · ·· × Z×
pek
k. (Le d´etailler.)
Exercice/M 1.10. L’indicateur d’Euler est la fonction
ϕ
:NNd´efinie par
ϕ
(n):=|Z×
n|.
Montrer que
ϕ
(pe) = (p1)pe1si pest premier et e1.
Montrer que
ϕ
(ab) =
ϕ
(a)
ϕ
(b)si aet bsont premiers entre eux.
Pour n=pe1
1···pek
kconclure que
ϕ
(n) = k
i=1(pi1)pei1
i=nk
i=1(11
pi)
Comme application montrer le r´esultat suivant, qui g´en´eralise le petit th´eor`eme de Fermat :
Corollaire 1.11 (Euler-Lagrange).L’ordre de tout ´
el´
ement x Z×
ndivise l’ordre du groupe Z×
n, donc
x
ϕ
(n)=1. Autrement dit, tout entier x premier avec n v´
erifie x
ϕ
(n)1(mod n).
Exercice/M 1.12. V´erifier que aest un g´en´erateur de (Zn,+) si et seulement si aest inversible dans Zn.
En d´eduire que tout groupe cyclique d’ordre nadmet exactement
ϕ
(n)g´en´erateurs. En particulier, pour
ppremier, il existe exactement
ϕ
(p1)racines primitives dans Z×
p. Si l’on choisit xZ×
pde mani`ere
al´eatoire, quelle est la probabilit´e de tomber sur une racine primitive?
Outre l’ordre
ϕ
(n)on veut connaˆıtre la structure pr´ecise du groupe Z×
n.`
A nouveau, par le th´eor`eme
des restes chinois, il suffit de traiter le cas n=pe. Pour le r´esultat suivant consultez votre cours d’alg`ebre :
Th´
eor`
eme 1.13. Si n =peest la puissance d’un nombre premier impair p 3`
a l’exposant e 2, alors le
groupe Z×
nest cyclique d’ordre
ϕ
(pe) = (p1)pe1. Si g est un g´
en´
erateur de Z×
p, alors g ou g+p est un
g´
en´
erateur de Z×
pepour tout e 2.
Pour p =2la situation est diff´
erente : Z×
2={1}est trivial, Z×
4=1}est cyclique d’ordre 2, mais
pour e 3, le groupe Z×
2en’est plus cyclique. Il est le produit directe du sous-groupe h−1id’ordre 2et du
sous-groupe h5id’ordre 2e2.
Exercice/M 1.14. D´eduire du th´eor`eme que Z×
nest cyclique si et seulement si n=2,4,pe,2peavec un
nombre premier p3 et e1. Indication. — Dans tout autre cas on peut construire un homomorphisme
surjectif Z×
nZ2×Z2. Comme le groupe image n’est pas cyclique, Z×
nne l’est pas non plus.
1.2. D´
eterminer l’ordre d’un ´
el´
ement. Comment d´eterminer efficacement l’ordre de xdans Z×
m?
´
Evidemment la m´ethode na¨ıve consiste `a calculer successivement x1,x2,x3,... pour ainsi trouver le plus
petit exposant n1 tel que xn=1 dans Zm. Ceci est tr`es inefficace lorsque nest grand.
Exemple 1.15. Regardons m=232 ·332 ·532 +1>1047. Il se trouve que mest premier, ce qui permet
de d´eduire
ϕ
(m) = m1=232 ·332 ·532. Comment d´eterminer l’ordre de ¯
3 dans Z×
m? Il se trouve que
ord(¯
3) = 226 ·330 ·532. Il est donc hors de question d’attaquer cette question par le tˆatonnement na¨ıf!
MAE 22 juin 2009
§
2 — Algorithmes probabilistes 177
Calculons intelligemment en exploitant notre connaissance du th´eor`eme de Lagrange : il nous garantit
que l’ordre de xest un diviseur de
ϕ
(m), ce qui limite consid´erablement les exposants n`a tester! Suppo-
sons connue la d´ecomposition
ϕ
(m) = pm1
1···pmk
kavec p1<··· <pkpremiers et m1,...,mk1. L’ordre
de xZ×
nest donc de la forme ord(x) = pn1
1···pnk
kavec 0 nimi. Posons q=
ϕ
(m)/pmi
ipour un in-
dice i=1,...,k. Alors y=xqest d’ordre ord(y) = pni
i. Pour trouver niil suffit maintenant de regarder
y,yp1,yp2
1,...,ypmi
iafin de d´eterminer le plus petit nitel que ypni
i=1.
Algorithme X.1 D´eterminer l’ordre d’un ´el´ement xdans le groupe Z×
m
Entr´
ee: un ´el´ement x=¯adans Z×
met la factorisation
ϕ
(m) = pm1
1···pmk
k
Sortie: l’ordre de xdans Z×
m, c’est-`a-dire le plus petit entier n1 tel que xn=1
si pgcd(a,m)>1alors retourner «erreur »
pour ide 1`
akfaire
q
ϕ
(m)/pmi
i=pm1
1··· c
pmi
i···pmk
k,yaqmodm,ni0
tant que y6=1faire yypimodm,nini+1
fin pour
retourner n=pn1
1···pnk
k
Exercice/M 1.16. Prouver que l’algorithme pr´ec´edent est correct. Pourquoi s’arrˆete-t-il? Comment ˆetre
sˆur que dans la i`eme it´eration xqest d’ordre pni
i?`
A noter que la sp´ecification exige que xZ×
m; quel est
l’int´erˆet du test redondant pgcd(a,m)>1? Est-il coˆuteux? Expliquer pourquoitous les calculs s’effectuent
efficacement si l’on utilise la puissance dichotomique modulaire (voir le projet VIII). Montrer ainsi que la
complexit´e est d’ordre O(klog(m)3)utilisant la multiplication/division scolaire. Justifier ainsi l’int´erˆet de
cet algorithme vis-`a-vis le tˆatonnement na¨ıf.
Exercice/P1.17. V´erifier l’exemple pr´ec´edent. Puis pour le nombre premier p=41!+1 d´eterminerl’ordre
de 2,3,4,... dans Z×
p. Quelle est la plus petite racine primitive dans Z×
p?
Remarque 1.18. L’algorithme pr´ec´edent s’applique plus g´en´eralement `a un groupe Gquelconque pourvu
que l’on sache pr´ealablement assurer xm=1 et factoriser m=pm1
1···pmk
k. Si Gest fini alors m=|G|
convient. L’algorithme s’applique mˆeme `a des groupes infinis, dans quel cas il faut assurer xm=1 par un
autre moyen pour pouvoir satisfaire l’hypoth`ese de l’algorithme.
Remarque 1.19. Afin dˆetre efficace, l’algorithme pr´ec´edent suppose que l’on sache factoriser l’exposant
en question. Ceci peut ˆetre facile dans certains cas, mais en g´en´eral la factorisation est une tˆache tr`es dure!
C’est pour cette raison que nous l’avons plac´ee ici parmi les hypoth`
eses de l’algorithme : il faut d’abord
r´esoudre le probl`eme de factorisation avant de l’appliquer.Ainsi la factorisation d’entiers reste un probl`eme
`a part; nous le discuterons dans le chapitre suivant.
2. Algorithmes probabilistes
2.1. Recherche d’une racine carr´
ee de 1modulo p.´
Etant donn´e un nombre premier pon se pro-
pose de trouverune racine carr´ee de 1 dans Z×
p. Le d´eveloppement qui suit est une application exemplaire
de nos connaissances sur la structure de Z×
p. L’algorithme efficace qui en d´ecoule nous servira plus tard,
dans le projet XII, dans un tout autre contexte.
Exercice/M 2.1. Montrer que Z×
pcontient une racine carr´ee de 1 si et seulement si 4 |p1.
D´esormais soit p=4k+1 un nombre premier. On cherche une racine yZ×
pdu polynˆome X2+1 : il
en existe exactement deux, notons-les yet y. Pensons `a un nombre pgigantesque, comme 10100 +949.
Comment trouver deux aiguilles dans une telle botte de foin ?
Exercice/P 2.2. ´
Ecrire une fonction qui prend comme param`etre un nombre premier p=4k+1 et cherche
le plus petit entier y=2,3, . .. tel que y2≡ −1(mod p).
Remarque. — Il sera instructif de faire afficher chaque essai par cout << ’.’ . Comme la deuxi`eme
racine est py, il suffit d’en trouver la premi`ere. Si l’on n’en trouve pas dans y[[2,2k]], la fonction peut
MAE 22 juin 2009
178 Chapitre X Arithm´etique du groupe
Z×
n
renvoyer 0 pour signaler l’erreur : dans ce cas pne peut ˆetre premier. (La conclusion r´eciproque est fausse :
25 n’est pas premier, mais il existe bien des racines carr´ees de 1 modulo 25. Les expliciter.)
Exemple 2.3. Tester votre fonction sur 5, 13, 17, 29, 37, ... puis sur des nombres plus grands :
1009,106+33,109+9,1015 +37,1030 +57,1050 +577,10100 +949.
Jusqu’o`u peut-on aller ? Convainquez-vousque la valeur de yen fonction de psemble al´eatoire. De mani`ere
heuristique, quel est le nombre moyen d’it´erations n´ecessaires pour trouver y?
Peut-on trouver une m´ethode plus efficace? Bien sˆur! Rappelons que Z×
pest cyclique d’ordre 4k. Pour
tout xZ×
pla puissance y=xkv´erifie alors y4=1. En particulier z=y2v´erifie z2=1, et dans un corps
ceci implique soit z=1 soit z=1. Dans le cas favorable z=1 on a trouv´e avec yune des deux racines
carr´ees de 1 modulo p. Ceci motive l’algorithme suivant :
Algorithme X.2 Trouver une racine carr´ee de 1 modulo p
Entr´
ee: un nombre premier pde la forme p=4k+1
Sortie: un entier ytel que y2≡ −1 modulo p.
r´
ep´
eter
choisir un entier x[[2,p2]] de mani`ere al´eatoire
calculer yxkmod p, puis zy2mod p
jusqu’`
az6=1
si z=p1alors retourner ysinon retourner «erreur : pn’est pas premier »
Exercice/M 2.4. Justifier l’algorithme pr´ec´edent; en particulier expliquer pourquoi on peut esp´erer de
trouver rapidement un ´el´ement xqui convient. Indication. — Soient ±yles deux racines carr´ees de 1
modulo p=4k+1. V´erifier que l’application h:x7→ xkd´efinie un homomorphisme surjectif h:Z×
p
1,±y}, le noyau ´etant le sous-groupe des ´el´ements dont l’ordre divise k. Montrer ainsi que pour la
moiti´e des ´el´ements xZ×
pon tombe sur une des racines ±ycherch´ee.
Remarque. — Quand on appelle l’algorithme pour un nombre premier p, comme exig´e par la sp´ecification,
alors on a toujours z=p1 au test final. Bien que redondante, quel pourrait ˆetre l’int´erˆet pratique d’une
telle mesure de pr´ecaution? Est-elle coˆuteuse? Vaut-il mieux la supprimer ou la garder en place?
Exercice/P 2.5. ´
Ecrire une fonction efficace qui prend comme param`etre un nombre premier p=4k+1 et
qui renvoie un entier y[[2,p2]] v´erifiant y2≡ −1 modulo p.
Remarque. — Veiller `a impl´ementer une puissance efficace. Comme avant il sera instructif de faire afficher
chaque essai par cout << ’.’ . Justifier que votre fonction travaille correctement et motiver son int´erˆet.
V´erifier empiriquement votre pr´evision sur les exemples ci-dessus.
Remarque. — Dans la pratique on remplace souvent le choix al´eatoire de xpar des essais successifs
x=2,3,.... Quels avantages (pragmatiques) et inconv´enients (th´eoriques) voyez vous dans cette variante?
Exercice/M 2.6. Essayons de d´eterminer la complexit´e asymptotique des deux m´ethodes :
(1) Supposons que la premi`ere m´ethode n´ecessite kit´erations en moyenne. (Ce nombre correspond-
il `a vos exp´eriences? Vous pouvez le justifier sous l’hypoth`ese que yparcourt l’intervalle de
mani`ere al´eatoire.) Chaque test calcule y7→ y2en effectuant une multiplication modulo p. La
complexit´e moyenne est donc d’ordre Θ(pln(p)2).
(2) Supposons que la deuxi`eme m´ethode n´ecessite 2 it´erations en moyenne. (Vous pouvez le justifier
rigoureusement si vous voulez. Ce nombre correspond-il `a vos exp´eriences?) Chaque test effec-
tue une puissance dichotomique y7→ yk, ce qui n´ecessite entre log2ket 2log2kmultiplications
modulo p. La complexit´e moyenne est donc d’ordre Θ(ln(p)3).
V´erifier ces affirmations et comparer les pr´evisions aux exp´eriences.
2.2. Recherched’un ´
el´
ementd’ordreqemodulo p.Le paragraphe pr´ec´edent a pr´esent´eune m´ethode
efficace pour trouver un ´el´ement d’ordre 4 dans Z×
p. On ´etendra ais´ement cette approche aux ´el´ements
d’ordre qeavec qpremier.
MAE 22 juin 2009
§
2 — Algorithmes probabilistes 179
Algorithme X.3 Trouver un ´el´ement yZ×
pd’ordre qe
Entr´
ee: deux nombres premiers pet qet un exposant e1 tel que p1=qer
Sortie: un entier y[[1,p1]] repr´esentant un ´el´ement d’ordre qedans Z×
p
r´
ep´
eter
choisir x[[1,p1]] de mani`ere al´eatoire
calculer yxrmod p, puis zyqe1mod p
jusqu’`
az6=1
si zq1(mod p)alors retourner ysinon retourner «erreur : pn’est pas premier »
Exercice/M 2.7. La preuve de cet algorithme suit exactement la d´emonstration pr´ec´edente : Soit pun
nombre premier. V´erifier que l’application h:x7→ xrd´efinit un homomorphisme h:Z×
pZ×
p. Le noyau
ker(h)est le sous-groupe des ´el´ements dont l’ordre divise r.
Supposons que gest un g´en´erateur de Z×
pet que p1=qer. Alors ker(h)est cyclique d’ordre r,
engendr´e par gqe. L’image im(h)est le sous-groupe des ´el´ements dont l’ordre divise qk; il est cyclique
d’ordre qe, engendr´e par gr. En particulier im(h)contient exactement (q1)qe1´el´ements d’ordre qk.
Montrer qu’avec probabilit´e 1 1
qle choix de xm`ene `a un ´el´ement yd’ordre qk. En d´eduire que
l’algorithme pr´ec´edent est correct, et justifier l’int´erˆet de cette approche.
Exercice/P 2.8. ´
Ecrire une fonction efficace qui impl´emente l’algorithme ci-dessus. Comme toujours, il
faut veiller `a utiliser une puissance efficace.
Remarque. — Quand on appelle l’algorithme pour un nombre premier p, comme exig´e par la sp´ecification,
alors on a toujours zq=1 au test final. Bien que redondante, quel pourrait ˆetre l’int´erˆet pratique d’une telle
mesure de pr´ecaution? Est-elle coˆuteuse? Vaut-il mieux la supprimer ou la garder en place?
Remarque. — Dans la pratique on remplace souvent le choix al´eatoire de xpar des essais successifs
x=2,3,.... Quels avantages (pragmatiques) et inconv´enients (th´eoriques) voyez vous dans cette variante?
Exemple 2.9. Trouver un ´el´ement d’ordre 41 modulo p=41! +1. Vous pouvez v´erifier ais´ement la
factorisation 41! =238 ·318 ·59·75·113·133·172·192·23·29·31 ·37·41. Si vous voulez, essayez de
trouver un ´el´ement d’ordre 1024, puis un ´el´ement d’ordre 81. Comment en fabriquer un ´el´ement d’ordre
3400704 =210 ·34·41? On discutera plus bas la g´en´eralisation ´evidente : produire un ´el´ement gZ×
41!+1
d’ordre 41! c’est-`a-dire une racine primitive.
2.3. Recherche d’une racine primitive modulo p.Reprenons le th´eor`eme 1.5 qui assure l’existence
d’une racine primitive modulo psans en expliciter aucune. Heureusement nous sommes en mesure de
rem´edier `a ce d´efaut, non par une formule close, mais par un algorithme efficace.
D’apr`es le th´eor`eme, Z×
pest un groupe cyclique d’ordre n=p1. On pourrait donc parcourir g=
2,3,... en calculant chaque fois l’ordre de gdans Z×
p. Soulignons que ceci est trop coˆuteux avec la m´ethode
na¨ıve, mais tout `a fait faisable avec l’algorithme efficace X.1, qui d´ecoule du th´eor`eme de Lagrange. Voici
une version peaufin´ee pour la question restreinte :
Algorithme X.4 D´eterminer si gest un g´en´erateur de Z×
p
Entr´
ee: Un entier g, un nombre premier p, et la factorisation p1=qe1
1···qek
k
Sortie: le message «gest un g´en´erateur »si et seulement si gest un g´en´erateur de Z×
p.
pour ide 1`
akfaire
calculer yg(p1)/qimod p.
si y=1alors retourner «gn’est pas un g´en´erateur »
si (yqimod p)6=1alors retourner «erreur : pn’est pas premier »
fin pour
retourner «gest un g´en´erateur »
Exercice/M 2.10. Montrer que l’algorithme ci-dessus est correct.
MAE 22 juin 2009
1 / 12 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !