Chapitre 05 - Univers TI Nspire

publicité
5
Chapitre
Chapitre 5.
Pseudo-primalité
Nous poursuivons l’investigation autour de la réciproque du théorème de Fermat : après avoir vu le
théorème de Lehmer dans le chapitre précédent, nous nous intéressons de plus près aux entiers non
premiers qui vérifient le théorème de Fermat. Leur étude apporte de nombreuses informations…
Sommaire
Chapitre 5. Pseudo-primalité ................................................................................ 103
1.
Nombres pseudo-premiers de base a .................................................. 104
1.1 Que sont ces nombres ? .............................................................. 104
2.
1.2
Recherche systématique .............................................................. 104
1.3
Vers un test de primalité ? ........................................................... 106
1.4
Les nombres de Carmichael ........................................................ 107
1.5
Test de primalité de Fermat ......................................................... 110
Nombres pseudo-premiers forts ............................................................ 111
2.1 Une propriété intéressante des nombres premiers .................. 111
2.2
Les nombres pseudo-premiers forts........................................... 113
2.3
Établir la liste des nombres pseudo-premiers forts .................. 115
2.4
Vers un test de primalité ............................................................... 117
2.5
Vers un test de primalité probabiliste (dit de Miller-Rabin) ..... 119
Christian Vassard (IUFM Rouen)
104
Mathématiques et TI-Nspire
1. Nombres pseudo-premiers de base a
1.1 Que sont ces nombres ?
On a vu précédemment que la réciproque du théorème de Fermat était fausse : mais elle n’est fausse
que pour quelques nombres composés, plutôt rares comme on l’a vu, et qu’il peut être intéressant de
mieux connaître.
Ces nombres, qui se comportent du point de vue du théorème de Fermat comme des nombres
premiers1, sont appelés pseudo-premiers, comme le précise la définition suivante.
Définition
Soit a un entier > 1.
Un entier n  2 est dit pseudo-premier de base a si :
n n’est pas premier ;
an–1  1 (mod n).
Remarquons que, lorsque n est un nombre pseudo-premier de base a, n et a sont alors nécessairement
premiers entre eux. Écrire en effet que an–1  1 (mod n) revient à affirmer l’existence d’un entier k tel
que an – 1 – 1 = kn, soit an – 2 × a – k × n = 1. Le théorème de Bézout permet de conclure que n et a sont
premiers entre eux.
1.2 Recherche systématique
Le tableur peut être employé pour lister directement les nombres pseudo-premiers de base 2 par
exemple, compris entre deux entiers donnés.
Les valeurs 2 et 100002 sont stockées dans les variables m et n, la base dans la variable a. Remarquez
bien la formule saisie dans la zone grisée de la colonne F : elle illustre une nouvelle fois l’efficacité
de void. Cette formule permet de lister les entiers entre 2 et 10 000 qui vérifient une propriété, et
seulement eux.
1
Sans en être...
2
Avec la calculatrice, entre 2 et 1000 semble plus raisonnable…
© T³ France 2011 / Photocopie autorisée
Pseudo-primalité
105
Le seq, combiné avec le when, met à void (vide) les entiers qui ne vérifient pas la propriété ; le
delvoid les supprime de la liste.
Rien n’oblige d’ailleurs à passer par le tableur. L’instruction précédente peut être directement dans
l’application Calculs, en précisant toutefois les valeurs de a, m et n :
Enfin et plus classiquement, une fonction dirait la même chose, en étant sans doute un peu plus
rapide : un tel nombre i d’une part n’est pas premier et d’autre part doit vérifier ai 1  1  mod i  . Si
l’on rencontre un tel i, il suffit de le mémoriser dans la liste l.
En demandant nos recherches entre 2 et 10000, les résultats sont les suivants :
nombre pseudo-premiers de base 2, parfois appelés nombres de Poulet :
341, 561, 645, 1 105, 1 387, 1 729, 1 905, 2 047, 2 465, 2 701, 2 821, 3 277, 4 033,
4 369, 4 371, 4 681, 5 461, 6 601, 7 957, 8 321, 8 481, 8 911, 10 261, 10 585, 11 305,
12 801, 13 741, 13 747, 13 981, 14 491, 15 709, 15 841, 16 705, 18 705, 18 721,
19 951, 23 001, 23 377, 25 761, 29 341, 30 121, 30 889, 31 417, 31 609, 31 621,
33 153, 34 945, 35 333, 39 865, 41 041, 41 665, 42 799, 46 657, 49 141, 49 981,
52 633, 55 245, 57 421, 60 701, 60 787, 62 745, 63 973, 65 077, 65 281, 68 101,
72 885, 74 665, 75 361, 80 581, 83 333, 83 665, 85 489, 87 249, 88 357, 88 561,
90 751, 91 001, 93 961 ;
nombres pseudo-premiers de base 3 :
91, 121, 286, 671, 703, 949, 1 105, 1 541, 1 729, 1 891, 2 465, 2 665, 2 701, 2 821,
3 281, 3 367, 3 751, 4 961, 5 551, 6 601, 7 381, 8 401, 8 911, 10 585, 11 011, 12 403,
14 383, 15 203, 15 457, 15 841, 16 471, 16 531, 18 721, 19 345, 23 521, 24 046,
24 661, 24 727, 28 009, 29 161, 29 341, 30 857, 31 621, 31 697, 32 791, 38 503,
41 041, 44 287, 46 657, 46 999, 47 197, 49 051, 49 141, 50 881, 52 633, 53 131,
55 261, 55 969, 63 139, 63 973, 65 485, 68 887, 72 041, 74 593, 75 361, 76 627,
79 003, 82 513, 83 333, 83 665, 87 913, 88 561, 88 573, 88 831, 90 751, 93 961,
96 139, 97 567 ;
© T³ France 2011 / Photocopie autorisée
106
Mathématiques et TI-Nspire
nombres pseudo-premiers de base 5 :
4, 124, 217, 561, 781, 1 541, 1 729, 1 891, 2 821, 4 123, 5 461, 5 611, 5 662, 5 731,
6 601, 7 449, 7 813, 8 029, 8 911, 9 881, 11 041, 11 476, 12 801, 13 021, 13 333,
13 981, 14 981, 15 751, 15 841, 16 297, 17 767, 21 361, 22 791, 23 653, 24 211,
25 327, 25 351, 29 341, 29 539, 30 673, 32 021, 35 371, 36 661, 36 991, 38 081,
40 501, 41 041, 42 127, 44 173, 44 801, 45 141, 46 657, 47 641, 48 133, 50 737,
50 997, 52 633, 53 083, 53 971, 56 033, 58 807, 59 356, 63 973, 67 921, 68 101,
68 251, 75 361, 79 381, 80 476, 88 831, 90 241, 91 636, 98 173 ;
nombres pseudo-premiers de base 7 :
6, 25, 325, 561, 703, 817, 1 105, 1 825, 2 101, 2 353, 2 465, 3 277, 4 525, 4 825,
6 697, 8 321, 10 225, 10 585, 10 621, 11 041, 11 521, 12 025, 13 665, 14 089, 16 725,
16 806, 18 721, 19 345, 20 197, 20 417, 20 425, 22 945, 25 829, 26 419, 29 234,
29 341, 29 857, 29 891, 30 025, 30 811, 33 227, 35 425, 38 081, 38 503, 39 331,
45 991, 46 657, 49 241, 49 321, 50 737, 50 881, 58 825, 59 305, 59 641, 62 745,
64 285, 64 681, 65 131, 67 798, 75 241, 75 361, 76 049, 76 627, 78 937, 79 381,
84 151, 87 673, 88 399, 88 831, 89 961, 92 929, 95 821, 97 921.
1.3 Vers un test de primalité ?
On peut montrer que les nombres pseudo-premiers de base a quelconque sont en nombre infini. Voici
par exemple le nombre d’entiers pseudo-premiers de base 2 inférieurs à la borne indiquée :
Borne
103
104
105
106
107
108
109
1010
Nombre
3
22
78
245
750
2057
5597
14884
Ils sont cependant beaucoup moins nombreux que les nombres premiers. Ainsi, il y a seulement 245
nombres pseudo-premiers de base 2 inférieurs à 1 million contre 78 494 nombres premiers…
D’où l’idée d’un test pour savoir si un entier n est premier ou non… Car finalement, dès l’instant que
2n–1  1 (mod n)3, on peut être sûr
soit que n est premier (c’est très probable4),
soit que n est pseudo-premier de base 2 (beaucoup moins probable d’après les remarques
précédentes).
C’est le cas par exemple avec l’entier 252 601 :
On peut alors se dire qu’il suffit de tester d’autres bases que 2 et penser que n a d’autant plus de
chances d’être premier qu’il se comporte comme un nombre premier pour de nombreuses bases. C’est
d’ailleurs le cas pour notre entier 252 061, qui est pseudo-premier pour toutes les bases de 2 à 100
comme on peut le voir ci-dessous :
3
Sinon, on est sûr que n est composé, comme nous l’avons vu plus haut.
4
On peut estimer cette probabilité pour un nombre inférieur à 106 à 78 494/(78 494+245)  99,7%, ce qui est très confortable !
© T³ France 2011 / Photocopie autorisée
Pseudo-primalité
107
Sauf qu’il existe effectivement des nombres pseudo-premiers n pour toutes les bases5 a... Pour ceuxlà, la répétition du test n’apporte aucune certitude supplémentaire…
D’ailleurs, quand on observe les listes de nombres pseudo-premiers obtenues précédemment, cela
semble être le cas pour 561, 1 105 ou 1 729... Ou 252 601 qui sait ? De tels nombres sont appelés
nombres de Carmichael, en hommage au mathématicien américain Robert Carmichael (1879-1967)
qui les a étudiés au début du XXe siècle.
1.4 Les nombres de Carmichael
Définition
Soit n un entier.
Un entier n composé est un nombre de Carmichael lorsque, pour tout entier a premier avec n,
on a an – 1  1 (mod n).
Ainsi l’examen des listes précédentes semble montrer que 561 est un nombre de Carmichael.
Prouvons-le ! Autrement dit, montrons que ce nombre entier est pseudo-premier pour toutes les bases
a telles que pgcd(561, a) = 1.
Cela semble se confirmer si l’on fait quelques autres essais, en excluant 3, 11 et 17 car 561 n’est
premier avec aucun de ces nombres :
5
Telles que pgcd(n, a) = 1...
© T³ France 2011 / Photocopie autorisée
108
Mathématiques et TI-Nspire
Supposons donc que a soit premier avec 561. Comme 561 = 3  11  17, remarquons aussi que a est
premier avec 3, ainsi qu’avec 11 ou 17, qui sont les trois facteurs premiers de 561.
L’application du petit théorème de Fermat conduit aux congruences suivantes :
a2  1 (mod 3) ;
a10  1 (mod 11) ;
a16  1 (mod 17).
Il est alors essentiel de remarquer que 560 est un multiple de 2, de 10 mais aussi de 16.
Ce qui permet de déduire des congruences précédentes que :
a560 = (a2)280  1 (mod 3) ;
a560 = (a10)56  1 (mod 11) ;
a560 = (a16)35  1 (mod 17).
Des deux premières congruences, on tire :
a560 – 1 = 3k = 11q, avec k et q entiers.
D’après le théorème de Gauss, comme 11 divise 3k et est premier avec 3, 11 divise k : il existe donc
un entier naturel k’ tel que k = 11k’.
Finalement a560 – 1 = 3 × 11 × k’.
La troisième congruence donne : a560 – 1 = 17r, avec r entier.
Donc 3 × 11 × k’ = 17r et le même raisonnement montre que 17 divise k’. Il existe donc un entier k’’
tel que 17k’’ = k’. Ceci prouve que :
a560 – 1 = 3 × 11 × 17 × k’’
soit encore
a560  1 (mod 3  11  17 = 561)
(on aurait pu conclure directement à partir des trois congruences initiales en remarquant que 3, 11 et
17 sont premiers entre eux deux à deux).
Bref, 561 est donc bien un nombre de Carmichael.
Le même raisonnement s’appliquerait d’ailleurs à un entier n s’écrivant sous la forme
pi – 1 divise n – 1.
p
i
et tel que
C’est le cas par exemple des entiers 1 105 ou 1 729, que nous avions remarqués dans les listes, ainsi
d’ailleurs de 252 601, ainsi que le montre l’écran suivant :
© T³ France 2011 / Photocopie autorisée
Pseudo-primalité
109
Rien n’empêche, sur la base de ce critère, de lister les nombres de Carmichael parmi les pseudopremiers de base 2. On reprend le même principe que dans les exemples précédents et on est sûr que
l’on a 0 dans toutes les divisions, et donc un nombre de Carmichael du type précédent, lorsque la
somme des quotients vaut 0 :
On obtient la liste suivante :
soit les 32 nombres de Carmichael suivants :
561, 1 105, 1 729, 2 465, 2 821, 6 601, 8 911, 10 585, 15 841, 29 341, 41 041, 46 657, 52 633,
62 745, 63 973, 75 361, 101 101, 115 921, 126 217, 162 401, 172 081, 188 461, 252 601,
278 545, 294 409, 314 821, 334 153, 340 561, 399 001, 410 041, 449 065, 488 8816.
Il n’en manque aucun, parmi ceux qui sont inférieurs à 5000007. Bien que rien ne le garantisse, notre
méthode a permis de récupérer l’intégralité des nombres de Carmichael inférieur à 500 000, qui
vérifient tous la même propriété que 561. Il y en a très peu. Ci-dessous le tableau donnant le nombre
de nombres de Carmichael inférieurs à une borne donnée :
Borne
103
104
105
106
107
108
109
1010
Nombre
1
7
16
43
105
255
646
1 547
On a démontré récemment (en 1992) qu’il y a une infinité de nombres de Carmichael.
6
Et en voilà d’autres, donnés toujours par mon ordinateur qui refuse de baisser les bras dans cette recherche :
{512 461,530 881,552 721,656 601,658 801,670 033,748 657,825 265,838 201,852 841,997 633}.
7
Voir par exemple http://www.research.att.com/~njas/sequences/A002997
© T³ France 2011 / Photocopie autorisée
110
Mathématiques et TI-Nspire
1.5 Test de primalité de Fermat
L’étude précédente conduit à conclure que si p est composé, alors ap – 1 est de façon très improbable
congru à 1 modulo p pour une valeur arbitraire de a, ce qui représente une sorte de réciproque
probabiliste du théorème de Fermat. On considèrera donc que si a p 1  1  mod p  , alors p est très
probablement premier. L’idée est de tester plusieurs base a différentes : au pire, on tombera sur un
nombre de Carmichael et on se trompera, mais ils sont très peu nombreux.
Le principe précédent est mis en œuvre dans ce que l’on appelle le test de primalité de Fermat.
Nous avons choisi de tester l’entier n avec 4 bases « témoins » 2, 3, 5 et 7 en calculant
2n – 1, 3n – 1, 5n – 1 et 7n – 1 modulo n8.
si l’un de ces nombres n’est pas égal à 1, on est sûr que n est composé, d’après la contraposée
du théorème de Fermat ;
si les quatre nombres valent 1, il est extrêmement probable que n soit premier ; sinon n est un
nombre de Carmichael ou simplement pseudo-premier à la fois des bases 2, 3, 5, 7. Comme
on sait par exemple qu’il n’existe que 1547 nombres de Carmichael inférieurs à 1010 contre
455 052 511 nombres premiers, la probabilité qu’il soit premier est donc d’environ
1 547
1–
soit 99,9997 %.
455 052 511
Plus on utilise de témoins, plus le risque que n soit considéré comme premier à tort diminue, sauf si n
est un des quelques « rares » nombres de Carmichaël qui « dupent » tous les témoins, tout en étant
composés.
Le choix de quatre témoins est un compromis entre la précision, et le temps de calcul. Ci-dessous la
fonction « probabiliste » estpremp. Dire que chaque appel de pwrmod donne 1 équivaut à dire que le
produit des résultats renvoyés vaut 1 : c’est le test que nous avons choisi de faire ci-après.
Les résultats sont spectaculaires, même pour des nombres de très grande taille :
8
C’est exactement la méthode employée par le programme de chiffrage PGP pour examiner si les grands nombres aléatoires qu'il choisit
sont premiers.
© T³ France 2011 / Photocopie autorisée
Pseudo-primalité
111
Comme prévu, un entier comme 252 601, nombre de Carmichael, est considéré comme premier : pas
de chance ! Par contre, 561, lui aussi nombre de Carmichael, mais aussi multiple de 3, ne renvoie pas
1 à l’un des tests9… ce qui nous sauve !
2. Nombres pseudo-premiers forts
Où l’on se rend compte que le sujet des pseudo-premiers, loin d’être épuisé, ouvre encore de
nouvelles perspectives !
2.1 Une propriété intéressante des nombres premiers
Soit n un entier premier. Dire que x2  1
n.
 mod n 
équivaut à dire que x  1 ou x  –1 modulo
Démonstration
En effet si l’on a x2  1
 x  1 x  1  0  mod n 
 mod n  ,
alors on peut en déduire que x2  1  0
 mod n 
ou que
soit finalement que  x  1 x  1  kn avec k  .
Donc n premier divise le produit (x – 1)(x + 1) : ou il divise (x – 1), ou il divise (x + 1). Autrement dit
x  1 ou x  –1 modulo n.
La réciproque est immédiate.
Exemples
Observons ce qui se passe avec un nombre premier impair, comme 125 468 249.
On sait d’après le théorème de Fermat que 2n1  2125 468 248  1 modulo n. Or n – 1 est forcément un
entier pair, ce qui permet d’appliquer le résultat précédent :
2
2
n 1
2
2
 n 1   125 468 248 
  2 2    2 2    262 734 124   1 .

 

n 1
On est donc sûr a priori que : 2 2  1 ou 2
première congruence qui est vérifiée.
Mais
9
n 1
2
 1 modulo n. La calculatrice montre que c’est la
n1
n 1
= 62 734 124 est encore divisible par 2 et 2 2  1 : rien n’empêche de continuer.
2
Il est impossible que 3560  1 (mod 561)… puisque 3 n’est pas premier avec 561…
© T³ France 2011 / Photocopie autorisée
112
Mathématiques et TI-Nspire
Cette fois-ci, on sait que l’on aura soit 2
vraie.
Avec 2
n1
4
n1
4
 1 soit 2
n1
4
 1 : c’est ici la seconde congruence qui est
 1 , on ne peut plus appliquer le théorème… on s’arrête là !
Tout ceci peut d’ailleurs se résumer dans une feuille de calcul (voir les instructions utilisées sur les
différentes figures ci-dessous).
On retrouve ce que l’on a observé ci-dessus c’est-à-dire une succession de 1, puis –1 puis un nombre
quelconque :
Dans la colonne C, la division par 2 est effectuée tant que c’est possible. Dans la colonne D, on
n1
calcule avec pwrmod les différents 2 2 modulo n.
k
Quand on a 1, on peut avoir 1 ou –1 dans la cellule au dessous ; quand on a –1, on ne peut rien dire de
ce qui vient après.
Un autre exemple où l’on ne rencontre jamais –1 : deux fois le reste 1... et on s’arrête car on ne peut
plus diviser le nombre par 2 :
© T³ France 2011 / Photocopie autorisée
Pseudo-primalité
113
Voici donc ce que l’on peut attendre d’un nombre premier impair : une succession de 1 ou encore une
succession de 1 puis –1 puis n’importe quel nombre.
C’est ce comportement que nous allons essayer de retrouver sur des entiers composés que nous
appellerons pseudo-premiers forts : les contraintes étant importantes, les nombres composés
ressemblant aux nombres premiers du point de vue de cette propriété seront relativement rares…
2.2 Les nombres pseudo-premiers forts
On peut en donner la définition suivante :
Soit n un nombre entier impair ; n – 1 est pair, et en factorisant autant que possible l’entier 2
(au moins une fois), on peut écrire n – 1 = 2s × m où m est un entier impair.
L’entier composé n sera dit pseudo-premier fort de base a si :
ou bien a m  1 modulo n ;
ou bien il existe un entier q , 0  q  s – 1, a 2 m  1 modulo n.
q
Dans le premier cas, on a une succession de 1 qui s’arrête quand la division par 2 n’est plus possible ;
dans le deuxième, on a rencontré –1, après une série de 1, puis un nombre quelconque. Cela
correspond aux deux types de comportements que nous avons relevés sur les nombres premiers.
Remarquons qu’un entier n pseudo-premier fort de base a est nécessairement un nombre pseudopremier de base a. Il est en effet immédiat de montrer que, dans les deux cas de la définition,
a n1  1  mod n  . La réciproque est fausse, comme nous le verrons juste après.
Exemple
Déterminons des nombres pseudo-premiers forts de base 2
Ils sont à rechercher, s’ils existent, parmi les pseudo-premiers de base 2, dont la liste commence, on
l’a vu, par 341, 561, 645, 1 105, 1 387, 1 729, 1 905 et 2 047. Pour tous ces entiers, par définition, on
a 2n – 1  1 (mod n)...
Lesquels d’entre eux sont des pseudo-premiers forts ?
© T³ France 2011 / Photocopie autorisée
114
Non pour 341...
Pas plus pour 561...
Ni pour 645 !
Non plus pour 1105 !
Niet pour 1387 !
Ceinture aussi pour 1729
© T³ France 2011 / Photocopie autorisée
Mathématiques et TI-Nspire
Pseudo-primalité
115
Rideau aussi pour 1905…
Et pour 2047 ? C’est le premier que l’on trouve !
Les nombres pseudo-premiers forts de base 2 semblent donc beaucoup plus rares que les pseudopremiers... Tellement rares que nous n’en avons déniché qu’un seul ! Employons les grands moyens...
un programme sur la calculatrice !
2.3 Établir la liste des nombres pseudo-premiers forts
 Soit donc à vérifier si un entier impair n est pseudo-premier fort de base a. Excluons les cas où n
est premier, égal à 1 ou pair, bien sûr. Le programme est basé sur une boucle où l’on calcule ap
modulo n, en partant de p = n – 1 et en divisant l’exposant par 2, tant que c’est possible.
On sort de cette boucle, lorsque la division par 2 n’est plus possible ou parce que le résultat r de la
congruence n’est plus 1.
On peut alors décider si le nombre est pseudo-premier fort : c’est le cas lorsque r = 1 (cela veut dire
que la suite de tous les résultats a été 1) ou lorsque r = –1.
Le code est le suivant :
© T³ France 2011 / Photocopie autorisée
116
Mathématiques et TI-Nspire
On peut par exemple vérifier avec cette fonction que 2 047 est un entier pseudo-premier fort, mais pas
341 ou 561.
Il est alors possible de dresser la liste des nombres pseudo-premiers forts de base 2, avec select_range
de la bibliothèque numtheory.
Ces nombres sont relativement rares, plus rares bien sûr que les pseudo-premiers : on comprend
aisément qu’il devient difficile pour un nombre composé d’être aussi proche d’un nombre premier
pour ces propriétés de congruence.
En étant très patient, et avec le logiciel, on obtient les résultats suivants :
liste des pseudo-premiers forts de base 2 inférieurs à 1 000 000 :
2 047, 3 277, 4 033, 4 681, 8 321, 15 841, 29 341, 42 799, 49 141, 52 633, 65 281, 74 665,
80 581, 85 489, 88 357, 90 751, 104 653, 130 561, 196 093, 220 729, 233 017, 252 601,
253 241, 256 999, 271 951, 280 601, 314 821, 357 761, 390 937, 458 989, 476 971, 486 737,
489 997, 514 447, 580 337, 635 401, 647 089, 741 751, 800 605, 818 201, 838 861, 873 181,
877 099, 916 327, 976 873, 983 401 ;
liste des pseudos-premiers forts de base 3 inférieurs à 1 000 000 :
121, 703, 1 891, 3 281, 8 401, 8 911, 10 585, 12 403, 16 531, 18 721, 19 345, 23 521, 31 621,
44 287, 47 197, 55 969, 63 139, 74 593, 79 003, 82 513, 87 913, 88 573, 97 567, 105 163,
111 361, 112 141, 148 417, 152 551, 182 527, 188 191, 211 411, 218 791, 221 761, 226 801,
228 073, 282 133, 288 163, 293 401, 313 447, 320 167, 327 781, 328 021, 340 033, 359 341,
364 231, 365 713, 385 003, 385 201, 399 001, 432 821, 443 713, 453 259, 478 297, 497 503,
504 913, 512 461, 551 881, 563 347, 625 873, 638 731, 655 051, 658 711, 679 057, 709 873,
801 139, 823 213, 859 951, 867 043, 876 961, 894 781, 951 481, 973 241, 994 507.
 On remarque qu’il n’existe pas de nombre pseudo-premier fort à la fois de base 2 et 3 inférieurs à
1 000 000. En existe-t-il pour autant ? Une recherche plus approfondie avec le logiciel, mais très
longue et pénible, montre qu’entre 1 et 10 000 000, les seuls pseudo-premiers forts de base 2 et 3 sont
les entiers :
1 373 653, 1 530 787, 1 987 021, 2 284 453, 3 116 107, 5 173 601, 6 787 327.
Le plus petit nombre pseudo-premier fort à la fois de base 2 et 3 est donc 1 373 653.
© T³ France 2011 / Photocopie autorisée
Pseudo-primalité
117
D’autres calculs ont été faits, dont les résultats suivent :
Bases
Plus petit nombre simultanément pseudopremier fort par rapport à ces bases
2 047
2
1 373 653
2, 3
25 326 001
2, 3, 5
3 215 031 751
2, 3, 5, 7
2, 3, 5, 7, 11
2 152 302 898 747
2, 3, 5, 7, 11, 13
3 474 749 660 383
2, 3, 5, 7, 11, 13, 17
341 550 071 728 321
2, 3, 5, 7, 11, 13, 17, 19
341 550 071 728 321
2, 3, 5, 7, 11, 13, 17, 19, 23
2, 3, 5, 7, 11, 13, 17, 19, 23, 29
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31
41 234 316 135 705 689 041
1 553 360 566 073 143 205 541 002 401
N=
56 897 193 526 942 024 370 326 972 32110
2.4 Vers un test de primalité
Modifions le test pspf pour que les nombres premiers le passent positivement, en plus des pseudopremiers forts. Pour des raisons qui apparaîtront plus tard, nous choisissons cette fois de renvoyer 1 si
le nombre passe le test, 0 sinon.
10
Nous appelons ce très grand entier de 29 chiffres N, car nous nous en servirons un peu plus loin.
© T³ France 2011 / Photocopie autorisée
118
Mathématiques et TI-Nspire
Nous sommes maintenant en mesure de construire un nouveau test de primalité.
Pour s’assurer à coup sûr de la primalité d’un nombre plus petit que le dernier, N, écrit dans le tableau
de la page précédente (N possède 29 chiffres), au plus 11 tests de pseudo-primalité forte sont
nécessaires.
Et si l’on considère un nombre plus grand que N, on introduit un risque, minime, d’avoir affaire avec
un nombre pseudo-premier fort.
Dans la fonction qui suit, nous avons mis dans une liste l les nombres du tableau de la page
précédente et dans une liste p les nombres premiers correspondants, de 2 à 31. On peut affirmer que :
pour un nombre strictement inférieur à 2 047 = l[1], s’il franchit le test avec le témoin
2 = p[1], c’est qu’il est premier ;
pour un nombre compris entre 2 047 = l[1] et 1 373 653 = l[2], s’il franchit le test pour les
témoins 2 = p[1] et 3 = p[2], c’est qu’il est premier.
...
pour un nombre compris entre les deux derniers entiers du tableau l[10] et l[11], s’il franchit
le test pour les témoins premiers entre 2 = p[1] et 31 = p[11], c’est qu’il est premier.
Au-delà de N, le plus grand entier du tableau, on n’a plus la certitude que le nombre soit premier
lorsqu’il franchit les tests de pseudo-primalité forte, mais une probabilité proche de 1. Par exemple, N
lui-même franchit le test pour les témoins premiers entre 2 et 31 mais n’est pas lui-même premier…
au demeurant on sait que les nombres pseudo-premiers forts sont beaucoup plus rares que les nombres
pseudo-premiers eux-mêmes beaucoup plus rares que les nombres premiers.
Écrivons donc une fonction estprem à partir de ces remarques.
La boucle While permet de positionner n dans la liste l. L’indice i obtenu est tel que
soit n < l[1] avec i = 1 (faire par exemple tourner la boucle avec n = 2000) ;
© T³ France 2011 / Photocopie autorisée
Pseudo-primalité
119
soit l[i–1]  n < l[i] (faire par exemple tourner la boucle avec 10000 ou 10000000) ;
soit n est supérieur ou égal à la dernière valeur soit i = 11.
En fonction de la position, on exécute les tests de pseudo-primalité forte qui correspondent.
Les résultats sont relativement rapides, même pour des nombres très grands11...
Le dernier nombre testé, un nombre de Mersenne, possède 386 chiffres, et la réponse est donnée en
une poignée de secondes à l’ordinateur12. Au demeurant, on est sûr que ce nombre est premier ou
pseudo-premier fort pour toutes les bases considérées dans le test.
2.5 Vers un test de primalité probabiliste (dit de Miller-Rabin)
Miller a démontré le théorème suivant, qui porte aujourd’hui son nom :
Soit n un nombre impair et composé, alors il ne peut passer avec succès qu’au plus n/4 des
tests de primalité forte pour des bases b telles que 2  b  n –1.
Autrement dit, si on lui fait passer un test de primalité forte, avec une base convenablement choisie, il
a une chance sur 4 de le passer avec succès : il a donc une chance sur quatre qu’on le prenne pour un
nombre premier alors qu’il est composé.
Si maintenant il passe avec succès le test pour une autre base, on a le même résultat. Comme les
événements sont indépendants, sur l’ensemble des deux tests, il aura une probabilité de 1 d’être pris
16
1
pour un premier alors qu’il est composé. Sur l’ensemble de k tests, la probabilité passe à k ; elle
4
diminue assez vite comme le montre l’écran suivant :
11
Jusqu’à 28 chiffres, on est sûr du résultat obtenu... Pour un nombre de 28 chiffres, la méthode des divisions successives demanderait
jusqu’à la racine carrée du nombre environ 0,5  1014 divisions soit, à raison de 30 ou 40 divisions à la seconde pour une Voyage 200,
quelque 1012 secondes... disons plus de 30 000 années !
12
Aussi vite qu’avec isprime.
© T³ France 2011 / Photocopie autorisée
120
Mathématiques et TI-Nspire
En pratique, on procède ainsi : soit n un nombre à tester, on choisit aléatoirement k bases de tests,
chacune comprise entre 1 et n – 1. Si n passe tous les tests, alors il y a moins d’une chance sur 4 k pour
que n soit en fait composé. On peut donc annoncer qu’il est premier avec une probabilité de 1 – 1k, qui
4
devient vite très grande !
Enfin voici le programme pour tester si un entier naturel n est premier, en utilisant k bases choisies au
hasard :
Quelques précautions sont prises, en particulier au niveau du choix du nombre au hasard : pas de
problème si n ne dépasse pas 1012, le choix est bien fait avec randint(2,n–1) ; sinon on plafonne le
maximum à 1012 car la fonction randint ne fonctionne plus avec des valeurs trop grandes.
On dispose ainsi d’un test de primalité probabiliste, et l’on peut augmenter autant que l’on veut la
probabilité qu’un nombre soit premier : ce qui de prime abord peut paraître étonnant, car en
arithmétique, le fait qu’un nombre soit premier ou pas ne relève pas du hasard…
© T³ France 2011 / Photocopie autorisée
Pseudo-primalité
121
Au demeurant, le principe du test de Miller Rabin est très efficace quand il s’agit de produire de très
grands nombres « très probablement » premiers, notamment pour les besoins de la cryptographie.
Ainsi par exemple, le nombre 7331 + 1644, qui possède 280 chiffres, est premier avec une probabilité
1
de 1  32 , soit quasiment 1… comme le montrent les écrans suivants :
4
Alors, premier ou pas ?
© T³ France 2011 / Photocopie autorisée
Téléchargement