4. Dresser la liste des 10000 premiers nombres premiers probables ainsi obtenus avec L=[2],L=[2,3],
puis L=[2,3,5].
5. En utilisant l’algorithme is_prime comme référence, déterminer la liste des "faux nombres premiers"
61500000 ainsi obtenus avec L=[2,3,5].
6. Comparer le coût de l’algorithme Rabin_Miller et celui de is_prime. Pour cela on considèrera les
fonctions RM (s)et IP (s)qui à sassocient les coût moyens d’execution des algorithmes de Rabin_Miller
et is_prime, repectivement, pour des entiers naléatoires à schiffres.
On pourra déterminer expérimentalement RM(s)en choisissant aléatoirement 20 entiers entre 10set
10s+1 et en faisant la moyenne des temps d’exécution de Rabin_Miller, en utilisant timeit.
7. Comparer les coûts des tests de Rabin_Miller et Lucas_Lehmer pour les nombres de Mersenne.
Remarque : En prenant pour Lla liste des nombres premiers 617, Pomerance, Selfridge, Wagstaff et
Jaeschke ont montré que le test de Rabin-Miller est déterministe pour tous les nombres inférieurs ou
égaux à 341 550 071 728 321.
Exercice 3 : Nombres de Carmichael.
Etant donné un nombre de Carmichael n, alors que tout nombre apremier à nest un menteur de Fermat,
les menteurs de Rabin-Miller ne représentent pas plus d’un quart des nombres 1< a < n. La probabilité
qu’un nombre de Carmichael soit déclaré premier par le test de Rabin-Miller en interrogeant tnombres
est donc 64−t.
1. En appliquant le théorème de Korselt, et à l’aide de la fonction factor de Sage, écrire un test
carmichael déterministe qui à un entier nrenvoie true si et seulement si ce nombre est de Carmichael.
La fonction factor renvoie une chaine de caractères, mais on peut facilement le convertir en liste par coercicion.
Essayer :
sage: list(factor(3473729))
2. En utilisant les tests de Rabin-Miller et en adaptant le test de Fermat, écrire un test probabiliste
carm_proba testant si un entier nest de Carmichael. (Attention ! Le test de Fermat peut exclure des
nombres de Carmichael nsi le témoin an’est pas premier à n)
Remarque : La factorisation est très coûteuse, la méthode probabiliste devrait donc être beaucoup plus
rapide que la déterministe.
II. Factorisation dans Z
Exercice 4 : Méthode ρde Pollard
1. Ecrire un algorithme facteur qui à un entier nassocie un facteur non trivial de n, en utilisant
la méthode ρde Pollard. (On pourra utiliser l’algorithme de Rabin-Miller pour exclure rapidement les
nombres probablement premiers).
2. En déduire un algorithme factorisation qui à un entier nassocie sa décomposition en facteurs
premiers sous la forme d’une chaine de caractères :
’n=p^a*q^b*r^c...’
3. Comparer l’efficacité moyenne de cet algorithme à factor sur des produits de grands nombres premiers.
4. En considérant les produits n=pq de deux nombres premiers, avec p<q, comparer le temps de calcul
moyen de l’algorithme à √pen itérant par différentes fonctions f(x) = x2+c, où c6= 0,−2.
Exercice 5 : Méthode p−1de Pollard
2