4 ALGORITHME D’EUCLIDE MODULAIRE SUR LES POLYN ˆ
OMES
R´eciproquement, si pp(w) =pgcd(f, g), alors wdivise bf. D’apr`es la
borne de Mignotte, ||bf/w||∞≤B≤p/2. Donc f∗=bf/w et de mˆeme,
g∗=bg/w. Donc, le corollaire (3.4) montre que la condition (2) est v´erifi´ee.
Th´eor`eme 4.1. Le coˆut pour une ex´ecution de l’algorithme pr´ec´edent est
au plus de O(n2(n2+ log2A)) op´erations sur les mots.
Dans cet algorithme, il reste le probl`eme de trouver le nombre premier
par lequel on va r´eduire.
Th´eor`eme 4.2. Soit r=res(f/h, g/h).rest un entier non nul major´e en
valeur absolue par (n+ 1)nA2n. De plus, la condition (2) est vraie si et
seulement si pne divise pas r. Enfin, il existe un algorithme probabiliste
utilisant O(n3+ log3A)op´erations sur les mots, on peut trouver un entier
pentre 2Bet 4Btel que pest premier ne divisant pas ravec probabilit´e au
moins 1/2. La moyenne du nombre d’it´erations n´ecessaires est donc au plus
2.
5. Algorithme modulaire : version “petits nombres premiers”
On peut modifier cet algorithme en r´eduisant modulo plusieurs petits
nombres premiers, et en relevant les r´esultats par l’utilisation du th´eor`eme
chinois. On doit alors `a chaque pas effectuer plusieurs fois l’algorithme
d’Euclide, mais les coefficients qui interviennent alors sont plus petits, ce qui
en pratique diminue consid´erablement le temps d’ex´ecution pour de grandes
valeurs des degr´es et des normes infinies des polynˆomes fet gde d´epart.
Soient deux polynˆomes primitifs fet gde Z[x], tels que deg(f) = n≥deg(g)
et de norme infinie inf´erieure ou ´egale `a A.
On pose b=pgcd(cd(f),cd(g)), k=d2 log2((n+ 1)nbA2n)e,B= (n+
1)1/22nAb et l=dlog2(2B+ 1)e.
On choisit un ensemble Sde 2lnombres premiers inf´erieurs `a 2klog k, puis
de Son retire les nombres premiers qui divisent b:S← {p∈S:p6 |b}.
Pour chaque pdans S, on calcule le polynˆome unitaire vp`a coefficients
dans {0,...,p−1}dont la r´eduction modulo pest ´egale au pgcd des r´eductions
fet gmodulo p.
Soit e=min{deg(vp:p∈S}. On fait : R← {p∈S: deg(vp) = e}. Si
le cardinal |S|de Sest inf´erieur ou ´egal `a lalors on enl`eve |S| − l´el´ements
de S, sinon, on recommence avec un nouveau choix de S.
On calcule, grˆace au th´eor`eme chinois, les polynˆomes w,f∗et g∗de Z[x]
de norme infinie inf´erieure `a (Qp∈Sp)/2 tels que pour tout p∈S
(3) w≡bv mod p,f∗w≡bf mod p,g∗w≡bg mod p.
Alors si
(4) ||f∗||1||w||1≤Bet ||g∗||1||w||1≤B,
pp(w) =pgcd(f, g). Sinon, il faut recommencer.