Conf Double
Conf Double
Conf Double
Jean-Marie De Koninck
Universite Laval
Avril 2004
1. Introduction
Que peut bien avoir dinteressant le nombre
2
20996011
1 ?
Eh bien! cest le plus grand nombre premier connu: il est fait de 6 320 430 chires et il a ete decouvert le 17
novembre 2003. Il aura fallu 25 000 annees de temps calcul partage sur les ordinateurs de 211 000 volontaires
repartis sur la plan`ete. Il faut croire que la recherche de nombres premiers a quelque chose de tr`es fascinant,
nest-ce pas ?
Histoire de sassurer que nous parlons bien de la meme chose: un nombre premier est un nombre plus grand
que 1 qui nest divisible que par 1 et par lui-meme. Ainsi 7 est un nombre premier parce que ses seuls diviseurs
sont 1 et 7, tandis que 6 nest pas premier parce qu`a part 1 et 6, il a aussi comme diviseur le nombre 2. On
peut samuser `a construire la liste des nombres premiers inferieurs `a 100:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97.
Cette notion de nombre premier existe depuis des milliers dannees et depuis ce temps, elle na cesse de
fasciner tous ceux et celles qui lont etudiee. Cest que la repartition des nombres premiers renferme de nombreux
myst`eres.
Par exemple, on sait depuis Euclide (300 ans avant Jesus-Christ) quil existe une innite de nombres premiers
(voir la preuve dans lencadre). Mais lorsquon examine de plus pr`es la suite des nombres premiers, on peut se
demander sil existe une innite de nombres premiers p tels que p +2 est aussi premier. Autrement dit, la suite
de couples
(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61), (71, 73), (101, 103), . . .
est-elle innie ?
Tous les mathematiciens sont convaincus que la reponse `a
cette question est OUI, mais une demonstration rigoureuse
de cette armation leur echappe. . . pour le moment. On ap-
pelle ce resultat la conjecture des nombres premiers jumeaux.
Cette incapacite `a demontrer cette conjecture est dautant
plus frustrante que, aussi loin quon aille dans la suite des
nombres premiers, on trouve toujours des nombres premiers
jumeaux. Ainsi, en 2002, Papp et Gallot ont trouve les nom-
bres premiers jumeaux
33218925 2
169690
1 et 33218925 2
169690
+ 1,
chacun de ces nombres premiers etant fait de 51090 chires.
Linfinitude des nombres premiers
On suppose quil existe seulement un nombre
ni de nombres premiers, disons p
1
< p
2
<
... < p
k
; on consid`ere alors le nouveau nom-
bre n = p
1
p
2
. . . p
k
+ 1; ou bien n est pre-
mier, ou bien il est compose; sil est premier,
on a une contradiction puisque n > p
k
; par
contre si n est compose, il existe un nombre
premier p qui divise n, et comme p doit etre
un des p
i
(1 i k), disons p = p
i
0
, on a
p
i
0
|p
1
. . . p
i
0
. . . p
k
+1 et par consequent p
i
0
|1,
ce qui na pas de sens; ainsi dans les deux cas,
on obtient une contradiction et linnitude des
nombres premiers est demontree.
1
2. Le theor`eme de rarefaction des nombres premiers
Les mathematiciens ont tout de meme reussi `a relever certains des entourant la repartition des nombres
premiers. Ainsi, tout `a fait naturellement, ils se sont demandes sil y avait une fa con rapide de calculer la
quantite de nombres premiers contenus dans lintervalle [1, x] pour un nombre x donne, une quantite quon a
convenu dappeler (x). Par exemple, (10) = 4, car il y a exactement quatre nombres premiers dans lintervalle
[1, 10]. De meme, (100) = 25 comme en fait foi lenumeration ci-dessus.
Ainsi depuis longtemps, on sest demande sil existe une fonction simple f(x) telle que
() lim
x
(x)
f(x)
= 1.
Vers la n du XVIII
e
si`ecle, le mathematicien fran cais Adrien-Marie Legendre (1752-1833) et le mathematicien
allemand Carl Friedrich Gauss (1777-1855) ont arme (sans toutefois pouvoir le demontrer) que la quantite
(x) etait approximativement x/ log x, suggerant ainsi que () etait vraie avec f(x) = x/ log x. Dailleurs, les
donnees numeriques allaient dans ce sens, comme semble le conrmer le tableau ci-dessous.
x (x) [x/ log x]
(x)
x/ log x
10 4 4 1.00
10
2
25 21 1.19
10
3
168 144 1.16
10
4
1229 1085 1.13
10
5
9592 8685 1.10
10
6
78498 72382 1.08
10
7
664579 620420 1.07
(Ici, on a ecrit [y] pour signier le plus grand
entier inferieur ou egal `a y.)
Mais Legendre et Gauss nont pas reussi `a demontrer que
lim
x
(x)
x/ log x
= 1, un resultat appele aujourdhui le theor`eme
de rarefaction des nombres premiers ou tout simplement le
theor`eme des nombres premiers. Vers le milieu du XIX
e
si`ecle,
le Russe Pafnouti Tchebychev (1821-1894) (dont le nom est
bien connu en theorie des probabilites) vient tout pr`es de
demontrer ce fameux theor`eme, puisquil arrive `a demontrer
quil existe des constantes a < 1 < b telles que, si x est assez
grand, le quotient
(x)
x/ log x
est compris entre a et b.
Ce nest quen 1896 que le mathematicien fran cais Jacques
Hadamard (1865-1963) et le mathematicien belge Charles-
Jean de la Vallee Poussin (1866-1962) ont reussi `a demontrer
(independamment, `a quelques mois dintervalle) le theor`eme
des nombres premiers. Pour ce faire, ils ont etudie le com-
portement analytique de la fonction zeta de Riemann
(s) = 1 +
1
2
s
+
1
3
s
+
1
4
s
+
1
5
s
+
1
6
s
+
1
7
s
+ . . . ,
une fonction dabord etudiee vers 1750 par le Suisse Leon-
hard Euler (1707-1783) pour des valeurs reelles de s et en-
suite vers 1850 par lAllemand Bernhard Riemann (1826-
1866) pour des valeurs complexes de s. En realite,
Hadamard et de la Vallee Poussin ont reussi `a completer
le travail danalyse complexe amorce 40 ans auparavant par
Riemann.
Legende ou realite ?
Au XIX
e
si`ecle, la legende voulait
que quiconque reussirait `a demontrer le
theor`eme des nombres premiers vivrait
au moins 100 ans. Il faut croire que
cette fabulation avait un brin de fonde-
ment, puisque les deux mathematiciens
qui en ont realise la preuve ont vecu tr`es
vieux, du moins pour leur epoque, soit
Hadamard jusqu`a 98 ans et de la Vallee
Poussin jusqu`a 96 ans.
Le lien entre la fonction (s) et (x) vient du fait que, pour chaque nombre reel s > 1, on a
(s) =
n=1
1
n
s
=
p
_
1 +
1
p
s
+
1
p
2s
+
1
p
3s
+
1
p
4s
+
1
p
5s
+ . . .
_
=
p
_
1
1
p
_
1
, (1)
o` u le produit inni parcourt tous les nombres premiers p dans lordre croissant.
2
Le lien entre (x) et (s)
Il existe un lien direct entre (x) et (s), soit celui donne
par la formule
log (s) = s
_
2
(x)
x(x
s
1)
dx. (2)
Voici une esquisse de la preuve. En utilisant lintegrale
de Stieltjes, on peut demontrer ce lien de la fa con suiv-
ante. On a dapr`es la relation (??),
log (s) = log
p
_
1
1
p
s
_
=
p
log
_
1
1
p
s
_
=
_
2
log
_
1
1
x
s
_
d(x)
= log
_
1
1
x
s
_
1
(x)
2
+s
_
2
(x)
x(x
s
1)
dx,
ce qui prouve (??), car dune part (2
) = 0, alors que
dautre part log
_
1
1
x
s
_
1
<
2
x
s
de sorte que (x)/x
s
tend vers 0 lorsque x .
Lidee de Riemann
Riemann est le premier `a avoir eu lidee
dutiliser les fonctions dune variable complexe
pour demontrer le theor`eme des nombres pre-
miers. Le produit inni (de meme que la serie) qui
represente la fonction zeta (voir (??)) ne converge
que si s > 1, la raison etant que la serie
n=1
1
n
diverge. Pour contourner cet obstacle, Riemann
eut lidee detendre le domaine de denition de la
fonction zeta. Dans un premier temps, on peut
facilement demontrer que (s) peut secrire sous
la forme
(s) =
1
1 2
1s
n=1
(1)
n+1
n
s
,
o` u cette fois la serie converge pour tout s > 0.
Armee de cette nouvelle representation, la fonction
(s) a maintenant un sens pour tout nombre reel
s > 0, sauf au point s = 1 o` u elle a un pole (une
sorte dexplosion). Avec un peu deort, on peut
continuer ce processus et prolonger la fonction (s)
`a tout le plan complexe.
3. Des formules simples pour livrer des nombres premiers ?
La formule f(n) = 17n nous donne le n-i`eme multiple de 17. Existe-t-il une formule tout aussi simple et
ecace qui donnerait le n-i`eme nombre premier ? On en cherche une depuis des si`ecles ! Tout ce quon a trouve
jusquici, ce sont des formules en apparence ecaces, mais en realite sans grand interet.
Donnons un premier exemple. Soit donc p
n
le n-i`eme nombre premier et considerons la formule
p
n
= 1 +
2
n
m=1
_
_
n
1 + (m)
_
1/n
_
,
o` u (m) designe le nombre de nombres premiers m. Par exemple, on peut la verier dans le cas de n = 2:
p
2
= 1 +
_
_
2
1 + (1)
_
1/2
_
+
_
_
2
1 + (2)
_
1/2
_
+ 0 + 0 + 0 + 0 + 0 + 0 = 1 + 1 + 1 = 3.
Mais, voil`a qui nest pas tr`es commode, dautant plus que cela presuppose quon connat `a lavance les valeurs
(1), (2), . . . , (2
n
).
Et si on etait moins exigeant ! Plutot que de chercher une formule qui donne tous les nombres premiers,
peut-on en exhiber une qui ne donnerait que des nombres premiers ? Une premi`ere tentative a ete faite par
Euler en 1772. Il a considere lexpression n
2
n + 41 pour n = 1, 2, 3, . . . Pour 0 n 40, on obtient les
nombres
41, 41, 43, 47, 53, 61, 71, 83, 97, 113, 131, 151, 173, 197, 223, 251, 281, 313, 347, 383, 421, 461,
503, 547, 593, 641, 691, 743, 797, 853, 911, 971, 1033, 1097, 1163, 1231, 1301, 1373, 1447, 1523, 1601,
3
lesquels sont tous premiers. Malheureusement, pour n = 41, on obtient n
2
n + 41 = 41
2
41 + 41 = 41
2
qui
nest pas premier. Un echec ! Mais si on avait choisi un autre polynome ? Aucune chance ! En eet, peu importe
le polynome P(x) `a coecients entiers, on peut demontrer que necessairement, il existe un entier positif n tel
que P(n) est compose, `a moins bien s ur de considerer un polynome constant, comme P(n) = 19 qui ne donne
trivialement rien dautre que des nombres premiers ! Mais, avouns-le, ce nest pas un resultat interessant !
En 1947, W.H. Mills en surprenait plus dun en demontrant quil existe une constante positive telle que
lexpression
_
3
n
_
represente un nombre premier pour tout entier n 1.
En prenant = 1, 3063778838630806904686144926, on obtient [
3
1
] = 2, [
3
2
] = 11, [
3
3
] = 1361, [
3
4
] =
2521008887, et tout semble bien aller. . . jusqu`a ce quon calcule [
3
5
] = 16022236204009818131831320175, un
multiple de 5. Cest quil aurait fallu preciser davantage la constante de Mills . Mais comment y arrive-t-on ?
En fait, lorsquon examine la fa con dont la constante est construite, on saper coit que lon doit connatre
`a lavance la suite p
n
, de sorte quon nest pas plus avance . . . En realite, il sagit dun resultat dun interet
theorique, mais pas du tout pratique pour trouver de nouveaux nombres premiers.
Donnons un 2
e
exemple o` u le subterfuge est encore plus evident, et qui plus est, cette fois, on obtient meme
chaque nombre premier p
n
. Considerons dabord la constante
s =
2
10
+
3
10
4
+
5
10
9
+
7
10
16
+
11
10
25
+ . . . = 0, 20030000500000070000000110 . . .
On peut assez facilement demontrer que
p
n
=
_
10
n
2
s
_
10
2n1
_
10
(n1)
2
s
_
. (3)
(Ici, encore une fois, [y] designe le plus grand entier y; par exemple, [4.1] = 4, [11.9] = 11 et [] = 3.) Bravo !
Mais comme p
n
apparat dej`a dans la formule qui donne la valeur exacte de la constante s, la formule (??)
nest pas dun interet pratique, car en realite elle presuppose que lon connat dej`a p
n
. Bel eort. . .
Et si on considerait des polynomes `a deux variables, ou trois, ou. . . En fait, il decoule des travaux de Yuri
Matijasevitch dans sa resolution en 1970 du 10
e
probl`eme de Hilbert quil existe un polynome `a coecients en-
tiers `a 26 variables tel que, si on limite les valeurs des variables aux nombres entiers, alors lensemble des valeurs
strictement positives du polynome est egal `a lensemble des nombres premiers. En 1976, les mathematiciens
Jones, Sato, Wada et Wiens ont reussi `a construire un tel polynome et le voici:
(k + 2){1 [wz + h + j q]
2
[(gk + 2g + k + 1)(h + j) + h z]
2
[2n + p + q + z e]
2
[16(k + 1)
3
(k + 2)(n + 1)
2
+ 1 f
2
]
2
[e
3
(e + 2)(a + 1)
2
+ 1 o
2
]
2
[(a
2
1)y
2
+ 1 x
2
]
2
[16r
2
y
4
(a
2
1) + 1 u
2
]
2
[((a + u
2
(u
2
a))
2
1)(n + 4dy)
2
+ 1 (x + cu)
2
]
2
[n + + v y]
2
[(a
2
1)
2
+ 1 m
2
]
2
[ai + k + 1 i]
2
[p + (a n 1) + b(2an + 2a n
2
2n 2) m]
2
[q + y(a p 1) + s(2ap + 2a p
2
2p 2) x]
2
[z + p(a p) + t(2ap p
2
1) pm]
2
}.
Peu commode, vous direz ! Mais alors, y a-t-il moyen dobtenir un polynome avec les memes proprietes mais
avec moins de variables ? Oui, mais `a un co ut quant au degre du polynome. En eet, il est possible dobtenir
un polynome `a 12 variables (plutot que 26), mais alors son degre est 13697. Dommage !
4
Des encadrements precis pour (x) et pour p
n
En 1962, Rosser et Schoenfeld ont demontre
que, pour x 67, on a
x
log x
1
2
< (x) <
x
log x
3
2
.
En 2000, Panaitopol a obtenu encore mieux,
soit que pour x 59,
x
log x 1 +
1
log x
< (x) <
x
log x 1
1
log x
.
On peut demontrer que le theor`eme des nombres pre-
miers est equivalent `a lim
n
p
n
nlog n
= 1. Mais `a quel
point la quantite p
n
est-elle proche de son approximation
nlog n?
`
A ce sujet, en 1983, Guy Robin a demontre que
pour tout entier n 7022, on a
n(log n+log log n1) < p
n
< n(log n+log log n0, 9385).
Cet encadrement annonce par exemple que si n = 10
8
,
on aura 2033415473 < p
n
< 2039565473, ce qui est tout
de meme assez juste, puisque p
10
8 = 2038074743.
4. Les tests de primalite
Depuis quon etudie les nombres premiers, on cherche des methodes ecaces pour les reconnatre, i.e. des
methodes permettant detablir si un nombre donne est premier ou pas. On les appelle des tests de primalite.
Le test de primalite le plus naturel est s urement celui de la division par les petits nombres premiers. Par
exemple, pour savoir si 143 est premier, on examine sa divisibilite par 2, 3, 5, et ainsi de suite. Ici, 143 est
denonce par 11, puisquil est divisible par 11. Ce test est relativement ecace pour des petits nombres,
parce que si un nombre nest pas premier, il sera toujours denonce par un de ses diviseurs premiers qui est
n. Ainsi, etant donne un nombre n < 10
12
, en utilisant un logiciel de calcul, on peut tester rapidement
(soit en quelques secondes) sa divisibilite par tous les nombres premiers < 10
6
; si aucun diviseur < 10
6
nest
trouve, alors le nombre n est declare premier. Pour des nombres plus grands, disons de lordre de 10
20
, cette
methode nest plus ecace... `a moins que lon soit tr`es patient !
Un test de primalite bien connu et facile `a formuler est le theor`eme de Wilson, selon lequel si n est un entier
positif,
n est un nombre premier (n 1)! 1 (mod n).
(Ici a b (mod m) veut dire a b est un multiple de m.) Toutefois, puisque le calcul de (n 1)! est
laborieux (meme en reduisant modulo n ` a chaque etape), il sav`ere que ce test de primalite nest pas du tout
pratique.
Rappelons maintenant le petit theor`eme de Fermat, un resultat qui date de plus de trois si`ecles.
Petit theor`eme de Fermat. Soit p un nombre premier et soit a un entier relativement premier avec p. Alors
a
p1
1 (mod p).
Si la reciproque du petit theor`eme de Fermat etait vraie, alors on aurait un crit`ere de primalite tr`es ecace.
Mais malheureusement, la reciproque est fausse. En eet, si on prend a = 2 et n = 341 = 11 31, on a
2
340
1 (mod 341),
et pourtant 341 est un nombre compose. Par contre, le petit theor`eme de Fermat fournit un crit`ere de non
primalite fort commode, et on lenonce ainsi:
5
Soit n > 1 et soit (a, n) = 1. Si a
n1
1 (mod n), alors n est compose.
Par exemple, soit n = 2796238380562974519433. Comme
2
n1
2706340698865264344859 1 (mod n),
on conclut que n est compose.
Remarque. Signalons que le calcul de 2
n1
(mod n) (i.e. du reste de la division de 2
n1
par n) est tr`es
rapide: en fait, il est possible de demontrer que le nombre doperations que necessite levaluation de 2
n1
(mod n) est de lordre de log
3
n.
En pratique, si un nombre est compose, il est fort probable que cela sera conrme par la reciproque du test
de Fermat. Par contre, sil nest pas denonce par ce test, on ne peut pas conclure quil est premier. Dans un
tel cas, pourquoi ne pas tester `a nouveau le nombre n en utilisant le nombre 3 plutot que 2 ? Ainsi, si on avait
3
n1
1 (mod n), on pourrait alors conclure que n nest pas premier. Lidee est excellente. Toutefois, il existe
des nombres composes n tr`es sournois qui passent tous ces tests, i.e. des nombres composes n pour lesquels
a
n
1 (mod n) pour tout entier a nayant aucun facteur en commun avec n. Ces nombres exceptionnels,
on les appelle des nombres de Carmichael, et malheureusement on sait depuis 1992 (grace `a W. Alford, A.
Granville et C. Pomerance) quils sont en nombre inni. Do` u le besoin de developper des tests de primalite
davantage ables.
Lun des premiers tests de primalite sappliquant `a tous les nombres, et par surcrot tr`es ecace, est celui
introduit par Edouard Lucas en 1891. Dans les decennies qui ont suivi, une foule de tests tant soit peu meilleurs
que celui de Lucas ont pris forme. Ici, nous nous contentons dexpliquer le test de Lucas.
Le test de primalite de Lucas
Lenonce
Soit a et n deux entiers positifs tels que
a
n1
1 (mod n)
et supposons que
a
(n1)/p
1 (mod n)
pour chaque facteur premier p de n1. Alors
n est premier.
Un exemple
Soit n = 947 et a = 2. On a 946 = 2 11 43
et 2
946
1 (mod n). Or
2
946/2
= 2
473
946 (mod 947),
2
946/11
= 2
86
215 (mod 947),
2
946/43
= 2
22
41 (mod 947),
et cest pourquoi on peut conclure que 947 est
premier.
Remarque. Ce test comporte deux inconvenients. Le premier (pas trop grave) est quil faut trouver un a pour
lequel le test sera positif (si n est premier, bien s ur). Le deuxi`eme est quil faut tout de meme etre capable de
factoriser n1, ce qui nest pas toujours facile. Dans le cas o` u n est un nombre de Fermat, cela est evidemment
tr`es facile: cest lobjet du test de Pepin.
Eectivement, certains tests de primalite ne sappliquent qu`a une certaine categorie de nombres. Cest le
cas du test de Lucas-Lehmer qui ne sapplique quaux nombres de Mersenne, soit les nombres de la forme 2
p
1,
o` u p est premier. Cest aussi le cas du test de Pepin qui ne sapplique quaux nombres de Fermat.
6
Le test de primalite de Lucas-Lehmer
Lalgorithme le plus utilise pour etablir la primalite dun nombre de Mersenne, i.e. dun nombre de la
forme 2
p
1 o` u p est premier, est celui d u `a Lucas et, comme il a ete ameliore par la suite par Lehmer,
il est aujourdhui appele le test de Lucas-Lehmer.
Lenonce
Soit M
p
= 2
p
1, o` u p est un nombre premier
impair. Soit s
1
= 4 et, pour k 2, soit s
k
s
2
k1
2 (mod M
p
). Alors
M
p
est premier M
p
|s
p1
.
La programmation avec Mathematica
p=...;s=4;j=1;mp=2^p-1;
While[j<p-1,{r=Mod[s^2-2,mp];s=r;j++}];
If[Mod[r,mp]==0,Print["2^",p,"1 est
premier"],
Print["2^",p,"1 est compose"]]
Le test de Pepin
Enonce et exemples
Soit k un entier positif et F
k
= 2
2
k
+ 1. Alors
3
F
k
1
2
1 (mod F
k
) F
k
est premier.
Ainsi F
2
= 17 est premier, parce que 3
2
2
2
1
=
3
8
1 (mod 17). Par contre, F
5
=
4294967297 est compose, car
3
2
2
5
1
= 3
2
31
4284642994 1 (mod F
5
).
Voulez-vous gagner 500$ ?
Le plus petit nombre de Fermat dont on ne connat
aucun facteur premier est F
14
, et cela meme si Sel-
fridge et Hurwitz, en 1963, ont reussi `a etablir, en
utilisant le test de Pepin, quil est compose. Perfectly
Scientic Inc. ore un prix de 500$US `a quiconque
trouvera un facteur premier de F
14
. Sans vouloir
decourager qui que ce soit, mentionnons que F
14
est
fait de 4933 chires !
Comment mesure-t-on la rapidite dun algorithme ?
Que veut-on dire quand on dit quun algorithme qui teste la primalite dun nombre n (ou encore livre sa
factorisation) peut seectuer dans un temps polynomial ou exponentiel ou encore sous-exponentiel ?
On dit quun algorithme est polynomial si sa complexite (i.e. le nombre doperations que necessite son execution)
nexc`ede pas r
c
pour une certaine constante c > 0, o` u r est la longueur du nombre n en base 2 (i.e. r log
2
n).
Par exemple, la multiplication dun nombre n de r chires (en base 2) avec un nombre m de s chires requiert
essentiellement rs operations, i.e. environ log
2
nlog
2
m. Il en est de meme pour la division. Par contre, laddition
ou la soustraction de ces deux nombres en necessite environ O(max(r, s)). Les operations elementaires sont
donc polynomiales (en temps dexecution).
Si un algorithme est de complexite c
f(n)
, o` u c > 0 et f(n) est un polynome en log n, alors on dit que cet
algorithme est de temps exponentiel. Par exemple, le test de primalite dun nombre n par une verication avec
tous les nombres premiers p
n utilise environ
n etapes. Or
n = 2
log
2
n
= 2
(log
2
n)/2
. Voil`a pourquoi on
dit que ce test est exponentiel.
Si un algorithme est de complexite exp{c(log
2
n)
a
(log
2
log
2
n)
1a
}, o` u 0 < a < 1 et c est une constante, on dit
que cet algorithme est sous-exponentiel. En general, un bon algorithme de factorisation est sous-exponentiel.
On ne connat pas dalgorithme de factorisation polynomial.
7
Un test probabiliste: le test de primalite de Miller-Rabin
Pour des raisons pratiques, on pourrait parfois se con-
tenter dun test qui nous garantit quun nombre impair
donne est premier avec une certitude de presque 100%,
surtout si ce test prend moins dune seconde `a executer.
Cest la nature du test de Miller-Rabin. Essentiellement,
lidee est que pour realiser le test sur un nombre impair
n > 3, on choisit au hasard un entier a [2, n 2]; si
a est un temoin pour n (voir ci-contre), alors n est
declare compose; sinon, il y a environ trois chances sur
4 que n soit premier.
Ainsi, supposons que, pour un nombre impair n > 3, lon
ne trouve aucun temoin pour n apr`es avoir eectue k fois
le test de Miller-Rabin (pour dierents choix de a); alors
la probabilite que n soit premier est denviron 1
1
4
k
.
Par exemple, etant donne un entier positif impair, sup-
posons quon eectue 200 fois le test de Miller-Rabin, et
supposons que le test annonce que n est premier, alors
la probabilite quon fasse erreur est de lordre de
1
4
200
1
10
120
,
une quantite tr`es proche de 0, auquel cas on peut eec-
tivement armer quon est presque 100% certain que n
est premier.
Le test de Miller-Rabin
Soit n > 3 un entier impair. On peut donc
lecrire sous la forme n 1 = 2
s
d pour un cer-
tain entier s 0 et un certain nombre impair d.
Soit 1 < a < n nayant aucun facteur en com-
mun avec n (ce qui est facile `a verier en util-
isant lalgorithme dEuclide). Alors on dit que
a est un temoin pour n si a
d
1 (mod n) et
a
2
j
d
1 (mod n) pour chaque nombre j tel
que 0 j < s. Sil sav`ere que a est un temoin
pour n, alors on peut conclure que n est compose.
Autrement dit, un temoin pour n est quelquun
qui denonce n en conrmant quil est compose.
Sinon, cest-`a-dire si a nest pas un temoin, on
peut conclure avec une probabilite de 1
1
4
=
3
4
que n est premier. En eectuant le test une 2
e
fois avec un autre nombre a qui na aucun fac-
teur en commun avec n et en supposant encore
une fois que ce nombre a nest pas un temoin,
alors on est maintenant certain avec une proba-
bilite de 1(
1
4
)
2
=
15
16
que n est premier. Et ainsi
de suite.
Le test de Miller-Rabin est si ecace et able que le logiciel de calcul Mathematica lutilise pour
conrmer la primalite dun nombre premier avec la commande PrimeQ[ ]. Il reste que cest un test probabiliste
et non deterministe: il ne peut pas armer avec une certitude de 100% quun nombre est premier (meme sil
est eectivement premier !). Par surcrot, on est incapable de demontrer quil sagit dun test qui sexecute en
temps polynomial.
Il faut mentionner quune des methodes parmi les plus ecaces pour tester la primalite dun nombre en est
une qui utilise une generalisation du petit theor`eme de Fermat aux courbes elliptiques. Une courbe elliptique
est le lieu des points (x, y) qui satisfont une equation de la forme y
2
= x
3
+ ax + b, o` u a et b sont des nombres
rationnels. Les premiers tests de primalite utilisant les courbes elliptiques ont ete mis au point par S. Goldwasser
et J. Kilian en 1986. On peut constater quen pratique, le temps dexecution dun tel test est en moyenne de
lordre de log
6
n, donc polynomial; mais on est incapable de le demontrer.
Jusquen lan 2002, le test qui sapprochait le plus dun temps dexecution polynomial etait celui etabli en
1983 par Adleman, Pomerance et Rumely: leur test est presque polynomial, car son temps de calcul est de
lordre de (log n)
log log log n
.
Cetait lepoque o` u on se demandait si on arriverait enn un jour `a trouver un test de primalite deterministe
dont le temps dexecution est polynomial. Mais `a lete 2002, lhistoire des mathematiques allait prendre un
important virage . . .
8
Enn un test de primalite en temps polynomial !
On cherche depuis longtemps un test pouvant determiner si un entier positif n est premier ou non en un
temps polynomial, i.e. polynomial comme fonction du nombre de chires de n. Depuis des decennies,
on connat des tests de primalite probabilistes (i.e. qui determinent avec une certitude proche de 100%
quun nombre est premier ou non) seectuant en temps polynomial, mais malheureusement de tels tests
ne sont pas deterministes. Parmi les tests probabilistes tr`es ecaces, on retrouve celui utilisant les courbes
elliptiques, qui permet detablir (avec certitude!) la primalite dun nombre de 2 000 chires.
Au debut du mois dao ut 2002, trois chercheurs de lIndian Institute of Technology, soit le professeur
Manindra Agrawal et ses deux etudiants Neeraj Kayal et Nitin Saxena, ont annonce la decouverte dun
test de primalite dont le nombre detapes est borne approximativement par d
12
, o` u d est le nombre de
chires du nombre teste. En 2004, ils ont reduit ce nombre detapes `a d
6
.
Ce nouveau test des trois Indiens est dautant plus remarquable quil nutilise que des notions de theorie
elementaire des nombres, soit le petit theor`eme de Fermat (a
p
a (mod p) pour tout entier positif a et
tout nombre premier p) et le fait que (x + y)
p
x
p
+ y
p
(mod p) pour tout nombre premier p.
Leur manuscrit est disponible sur le WEB `a ladresse www.cse.iitk.ac.in/primality.pdf.
5. Les algorithmes de factorisation
5.1. Le test de factorisation de Fermat
Pierre de Fermat (1601-1665) est lauteur dun test de factorisation qui porte son nom: etant donne un
entier positif impair compose n, ce test consiste `a utiliser le fait quil existe des entiers positifs a et b tels que
n = a
2
b
2
, auquel cas n = (a b)(a + b) fournit une factorisation de n. Il sagit dune methode ecace si
lentier n poss`ede deux diviseurs relativement pr`es lun de lautre. Voici cette methode. Dabord le fait que de
tels entiers a et b existent toujours decoule du fait que si n = rs, avec 1 < r < s, alors les nombres a = (r +s)/2
et b = (s r)/2 font laaire. Le test consiste donc `a chercher deux entiers positifs a > b tels que n = a
2
b
2
.
Comme n = a
2
b
2
< a
2
et ainsi a >
n, il est certain que a [
n] + 1; si a
2
n est un carre parfait, disons a
2
n = b
2
, alors on a trouve a et b comme souhaite;
sinon on pose a = [
n] + 2, et ainsi de suite, jusqu`a ce que lon trouve un entier positif k tel que le nombre
a = [
n] + k a la propriete que a
2
n est un carre parfait que lon ecrira b
2
. Par ailleurs, ce processus a une
n, en ce sens que lon va necessairement trouver un b tel que b
2
= a
2
n, parce que b = (s r)/2.
Programme avec Mathematica, cette methode peut etre formulee ainsi:
n = ...; a = Floor[Sqrt[n]] + 1; While[!IntegerQ[b = Sqrt[a^2 - n]], a++];
Print[a, " ", b, "n =", a - b, " ", a + b]
Lexemple donne par Fermat est celui de la factorisation de n = 2027651281. Il calcule dabord [
n] = 45029.
Il commence avec a = 45029 + 1 = 45030; comme 45030
2
2027651281 = 49619 nest pas un carre parfait, il
pose ensuite a = 45031, ce qui ne donne toujours pas un carre parfait, et ainsi de suite, jusqu`a ce quil arrive
`a a = 45041, ce qui donne b =
45041
2
2027651281 =
n
log n
lan 0 20
petits nombres premiers
Test de Fermat rapide pour n = pq, 1650 Pierre de Fermat 20
(dierence de carres) avec p et q proches
x
2
y
2
(mod n) e