TD : complexit´e
Christophe Ritzenthaler
October 20, 2008
Les nombres de Mersenne
1. Soit donc q > 2 impair et Mq= 2q−1 On d´efinit
½L0= 4
Li+1 =L2
i−2 mod (Mq)
Alors Mqest premier ssi Lq−2≡0 mod (Mq). Programmer cette proc´edure.
Quelle est la complexit´e ?
2. Quelle est la complexit´e de l’algorithme effectuant le test des divisions successives
? La programmer. Evaluer le temps. Conclusion.
3. Calculer le temps mis par la fonction mersenne. Comparer avec la proc´edure
d´efinie.
4. On aurait pu ´egalement penser au petit th´eor`eme de Fermat qui donne une condi-
tion n´ecessaire pour qu’un nombre soit premier. Mais on peut trouver des nombres
n, appel´es nombre de a-pseudo-premier, non premiers et qui r´eussissent le test de
Fermat an−1≡1 mod (n) pour un apremier `a n. Ecrire une proc´edure perme-
ttant d’en trouver s’il en existe un plus petit que 500 pour a= 2. Les nombres
a-pseudo-premiers pour tout apremier `a nsont appel´es nombres de Carmicael.
V´erifier que celui trouv´e est de Carmicael.
Exponentiation rapide
Soit xun ´el´ement d’un anneau et nun entier. Comment calculer efficacement xn?
•Essayer de calculer brutalement 340000000 (mod 123).
•Essayer avec &ˆ.
Nous proposons dans la suite deux m´ethodes d’exponentiation rapide.
Soit xun ´el´ement et n= (nl−1, . . . , n0)b´ecrit en base b. La premi`ere est bas´ee sur
l’identit´e
x(nl−1,...,ni)b=³x(nl−1,...,ni+1)b´b·xni.
1