Université Bordeaux 1 MHT812 Master
Mathématiques Année 20092010
FEUILLE D'EXERCICES no22 Travail sur machine
Exercice 1 [Recherche de racines primitives modulo p]
1) Programmer l'algorithme vu en TD 21 dont on rappelle brièvement le principe. Soit p >2 un nombre premier. On suppose connue la factorisation p−1 =Q
i`eii.
• Pour toution cherche un élémentgid'ordre`eii. Pour cela on tire uniformément au hasard h entre 1 et p−1, on pose gi = h(p−1)/`eii modp et on teste si gi
convient, en calculant par exemple g`
ei−1 i
i mod p.
• Une fois tous les gi trouvés, g = Q
igi est d'ordre p−1 et est bien racine primitive modulo p.
2) On pourra comparer avec l'algorithme naïf qui consiste à tirer uniformément au hasard g entre 1 et p−1 et à regarder si g est d'ordre p−1, i.e. vérie g(p−1)/`i 6= 1 mod p pour touti.
Exercice 2 [Factorisation par l'algorithme de Dixon]
Programmer l'algorithme de factorisation de Dixon, dont on rappelle ici les diérentes étapes. On dispose d'un entier composé n>3 impair dont on cherche un diviseur non trivial.
• On calcule tous les premiers p1, p2, . . . , ph inférieurs à une borne B xée. Si l'un des pi divise nc'est ni.
• On choisit uniformément au hasard unbentre 2 etn−2. Sipgcd(b, n)>1c'est ni. Sinon, on factoriseb2 mod nsur lespi. Si cette factorisation est complète, i.e. sib2 mod nestB-friable, on mémorise bet leh-uplet(α1, . . . , αh) tel que b2 mod n=pα11. . . pαhh.
• On recommence jusqu'à avoirh+ 1telsb. On les notebj et la matrice dont les colonnes sont les h-uplets associés (αi,j)16i6h.
• On cherche(ej)∈ {0,1}h+1 tels queS= (αi,j)(ej) = 0 dansFh2.
• On pose (γ1, . . . , γh) = 12S, s = Q
ej=1bj, t = Qh
i=1pγii. On sait alors que s2−t2≡0 modn.
• Sipgcd(s+t, n)oupgcd(s−t, n)est strictement inférieur àn, c'est ni. Sinon, on cherche d'autres b(étapes 2 et 3) et d'autres relations (étape 4).