3 De Fp[X]àZ[X]
3.1 Borne de Landau-Mignotte
On peut majorer les racines d’un polynôme en fonction de ses coefficients : si rest une racine
de P=Xn+an−1Xn−1+· · · +a0alors |r| ≤ max(1,Pn−1
i=0 |ai|), de même on peut borner
les coefficients en fonction des racines (fonctions symétriques) et obtenir ainsi des bornes des
coefficients des facteurs en fonction des coefficients du polynôme factorisé. Mais ces bornes sont
très mauvaises.
On utilise la borne, difficile à démontrer, de Landau-Mignotte.
Si Q=Pq
i=0 biXiest un diviseur de P=Pp
i=0 aiXi, polynômes dans Z[X], alors
q
X
i=0
|bi| ≤ 2q
ap
bq
v
u
u
t
p
X
i=0
a2
i
3.2 Remontée de Hensel linéaire
Soit Pun polynôme unitaire dans Z[X]qui se décompose en deux facteurs irréductibles distincts
dans Fp[X]. Programmer la remontée de Hensel qui permet à partir de cette factorisation
modulo pd’en calculer une modulo p2,p3, ..., pkjusqu’à ce que pksoit supérieur à deux fois
la borne de Landau-Mignotte. En déduire la factorisation de Pdans Z[X]. La fonction mods
de Maple peut vous être utile.
3.3 Remontée de Hensel quadratique
C’est une variante de l’algorithme précédent : à chaque étape on remonte non seulement la
factorisation mais aussi la relation de Bézout entre les deux facteurs. Précédemment une
étape remontait de piàpi+1, montrer qu’avec cette variante une étape remonte de piàp2i.
Programmer cette variante.
3.4 Remontée de Hensel à kfacteurs initiaux
Soit Pun polynôme unitaire dans Z[X]qui se décompose en facteurs irréductibles distincts
dans Fp[X]mais on ne suppose plus qu’il y en ait seulement deux. Adapter l’algorithme de
remontée de Hensel linéaire pour traiter ce cas plus général.
3.5 Recombinaison
On peut avoir plus de facteurs dans Fp[X]que dans Z[X]. Après remontée on teste les facteurs
obtenus : si ce sont des facteurs de Pdans Z[X]on les met de côté. Pour ceux qui restent on
teste les produits deux à deux en les éliminant dès qu’ils constituent un facteur de Pdans Z[X]
et en ajoutant ce facteur à la liste des facteurs trouvés. Puis on recommence avec les produits
trois à trois s’il en reste, etc . . .
C’est cette étape qui donne une mauvaise complexité théorique à l’algorithme mais elle inter-
vient suffisamment peu en pratique pour ne pas pénaliser.
3.6 Le coefficient principal
Et si Pn’est pas unitaire ? Soit P=anXn+an−1Xn−1+· · · +a0.
En faisant le changement de variable anX=xmontrer que an−1
nP=xn+an−1xn−1+
anan−2xn−2+· · · +an−1
na0et qu’on est ainsi ramené à factoriser un polynôme unitaire.
Le défaut de cette méthode est qu’elle fait croître les coefficients et donc la borne de remontée.