École normale supérieure Département d’informatique 2011-2012 Algorithmique et Programmation TD n◦ 8 : Entiers Exercice 1. Multi-exponentiation Soit G un groupe commutatif d’ordre n. Donner un algorithme qui étant donnés g1 , . . . , g` ∈ G ` Y et des entiers e1 , . . . , e` ∈ {0, . . . , n−1} calcule le produit giei en O(log(n)+2` ) multiplications i=1 dans G. Primes ∈ N P Exercice 2. 1. Montrer que un entier n est premier si et seulement si il existe un entier a ∈ Z tel que an−1 ≡ 1 mod n mais a(n−1)/q 6≡ 1 mod n pour tout diviseur premier q de n − 1. 2. En déduire que tout nombre premier admet un certificat de primalité polynomial (en sa longueur binaire), i.e. Primes ∈ N P. Exercice 3. n On appelle n-ième nombre de Fermat le nombre Fn = 22 + 1 pour n > 0. Test de Pépin 1. Montrer que si Fn est premier, alors un entier g est un générateur de (Z/Fn Z)∗ si et seulement si g = −1. Fn En déduire que si Fn est premier alors 3 est un générateur de (Z/Fn Z)∗ . 2. Montrer que si 3(Fn −1)/2 ≡ −1 (mod Fn ) alors Fn est premier. Exercice 4 (Nombre pseudo-premier de Fermat en base a). Soit a ≥ 2 un entier. En considérant les entiers de la forme (a2p − 1)/(a2 − 1) où p est un nombre premier ne divisant pas a2 − 1, montrer qu’il existe une infinité de nombres pseudo-premiers de Fermat en base a. Primes ∈ BPP Exercice 5. 1. Soit n un entier premier impair supérieur ou égal à 3 : n = q2p + 1 avec p impair et soit a ∈ Z premier à n. On considère la suite (b0 , b1 , . . . , bp ) d’entiers compris entre 0 et n − 1 définie par : b0 ≡ aq (mod n), b1 ≡ b20 (mod n), (a) Montrer que bp = 1. 1 ..., bp ≡ b2p−1 (mod n). (b) Si b0 6= 1 montrer qu’il existe un indice i tel que bi = −1. 2. Montrer que si n est un entier composé impair supérieur ou égal à 3 : n = q2p + 1 avec p impair alors le nombre d’entiers a ∈ (Z/nZ)∗ pour lesquels la suite (bi )i∈[[0,p]] vérifie les deux conditions précédentes est inférieur à (n − 1)/2. 3. En déduire que Primes ∈ BPP. Exercice 6. Logarithme discret Soit G un groupe cyclique d’ordre n engendré par g et soit h ∈ G. Le problème du logarithme discret dans G consiste a trouver l’unique entier x dans {1, . . . , n} tel que h = g n . √ 1. Proposer un algorithme qui résoud le problème du logarithme discret en O( n) opérations dans le groupe G. 2. Montrer que si la factorisation de n = pe11 · · · pekk est connue (où les pi sont des nombres premiers deux à deux distincts), alors il existe un algorithme qui résoud le problème du P √ k logarithme discret en O i=1 ei (ln n + pi ) opérations dans le groupe G. Exercice 7. Soit p un nombre premier. Extraction de racine carrée modulo p 1. Nous supposons que p ≡ 3 mod 4. Donner un algorithme de complexité 0((log p)3 ) qui étant donné α ∈ {1, . . . , p − 1} tel que (α|p) = 1 retourne β ∈ {1, . . . , p − 1} tel que β 2 ≡ α mod p. 2. Nous supposons désormais que p ≡ 1 mod 4. Posons p = 2h m + 1. (a) Donner un algorithme probabiliste qui étant donné p retourne un élément γ de {1, . . . , p − 1} tel que (γ|p) = −1 en temps espéré O((log p)2 ). Montrer qu’un tel γ engendre l’unique sous-groupe d’ordre 2h de (Z/pZ)∗ . (b) Soit α ∈ {1, . . . , p − 1} tel que (α|p) = 1. Montrer que αm appartient au sous-groupe engendré par γ et en utilisant un algorithme de logarithme discret, en déduire un calculer une racine carré de αm modulo p. (c) Conclure en donnant un algorithme permettant de calculer les racines carrés de α en temps O((log p)3 + h log(h) log(p)2 ). 2