AccueilđŸ‡«đŸ‡·Chercher

MĂ©thode de factorisation de Fermat

En arithmétique modulaire, la méthode de factorisation de Fermat est un algorithme de décomposition en produit de facteurs premiers d'un entier naturel.

Pierre de Fermat

Intuition

L'intuition est la suivante. Tout entier naturel impair N se dĂ©compose en la diffĂ©rence de deux carrĂ©s : N = a2 – b2. AlgĂ©briquement, cette diffĂ©rence se factorise en (a + b)(a – b) et, si ni a + b ni a – b n'est Ă©gal Ă  1, alors ce sont des facteurs non triviaux de N.

Il existe une telle représentation pour tout nombre impair composé. Si N = cd est une factorisation de N, alors Puisque N est impair, c et d le sont aussi et ces « moitiés » sont des nombres entiers. Notons qu'un multiple de 4 donne aussi une différence de deux carrés, en posant c et d comme nombres pairs.

Dans sa forme la plus simple, la mĂ©thode de factorisation de Fermat peut ĂȘtre plus lente que la factorisation par essais de divisions. NĂ©anmoins, la combinaison des deux mĂ©thodes est plus efficace qu'uniquement l'une ou l'autre.

MĂ©thode de base

On essaie diffĂ©rentes valeurs de a, en espĂ©rant que a2 – N soit un carrĂ© b2. On peut utiliser qu'un carrĂ© ne peut se terminer que par 0, 1, 4, 5, 6 ou 9 dans le systĂšme dĂ©cimal.

FactorFermat(N): // N doit ĂȘtre impair
A ← arrondi(sqrt(N))
Bsq ← A*A – N
tant que Bsq n'est pas un carré:
A ← A + 1
Bsq ← A*A – N // ou de façon Ă©quivalente : Bsq ← Bsq + 2*A + 1
fin tant que
retourner A – sqrt(Bsq) // ou A + sqrt(Bsq)

Analyse

Soit N un entier possĂ©dant plus d'une factorisation (N possĂšde plus de deux facteurs). La mĂ©thode de Fermat donne la factorisation de N avec les plus petites valeurs de a et de b, c'est-Ă -dire que a + b est le plus petit facteur supĂ©rieur Ă  la racine carrĂ©e de N. Donc, a – b = N/(a + b) est le plus grand facteur n'excĂ©dant pas la racine carrĂ©e de N. Si la mĂ©thode produit N = 1 × N, cela signifie que N est un nombre premier.

Complexité

Pour N = cd, soit c le plus grand facteur plus petit que la racine carrée de N et soit a = (c + d)/2. Alors, le nombre d'opérations est approximativement

Si N est premier (donc c = 1), l'algorithme prend O(N) opĂ©rations. C'est donc une façon trĂšs inefficace de dĂ©montrer la primalitĂ© d'un nombre. Par contre, si N a un facteur suffisamment prĂšs de sa racine carrĂ©e, alors la mĂ©thode de Fermat est trĂšs efficace. Plus prĂ©cisĂ©ment, si c diffĂšre de moins que (4N)1/4 de √N, la mĂ©thode ne prend qu'une seule opĂ©ration. Cette analyse est indĂ©pendante de la grandeur de N.

Exemple

Par exemple, pour factoriser N = 5959 (√N ≈ 77,19), on calcule :

A 787980
Bsq 125282441

Le troisiĂšme essai produit un carrĂ© : A = 80, B = 21 et les facteurs sont A – B = 59 et A + B = 101.

Améliorations importantes

Les méthodes de factorisation du crible quadratique et du crible général de corps de nombres (GNFS) sont basées en grande partie sur la méthode de factorisation de Fermat.

MĂ©thode de factorisation de Lehman

La méthode de Fermat fonctionne optimalement lorsqu'un des facteurs est approximativement la racine carrée de N. La question qui s'ensuit est : peut-on s'arranger pour que ce soit le cas ?

Si on connaĂźt approximativement le quotient de deux facteurs, d/c, alors on peut choisir un nombre rationnel, v/u, proche de ce quotient. Posons Nuv = cv × du, donc les facteurs sont Ă  peu prĂšs Ă©gaux : la mĂ©thode de Fermat appliquĂ©e Ă  Nuv les trouvera rapidement. Puis, on obtient pgcd(N, cv) = c et pgcd(N, du) = d (sauf si c divise u ou d divise v).

En général, le quotient n'est pas connu, mais on peut essayer différentes valeurs de u/v et essayer de factoriser chaque Nuv résultant. Une méthode systématique est donnée par Russell Sherman Lehman[1]. Sa complexité calculatoire est de O(N1/3+Δ), laquelle est avantageuse par rapport à celle pour la méthode des divisions successives, dont la complexité est en O(N1/2+Δ).

Notes et références

(en) Cet article est partiellement ou en totalitĂ© issu de l’article de WikipĂ©dia en anglais intitulĂ© « Fermat's factorization method » (voir la liste des auteurs).
  1. (en) R. Sherman Lehman, « Factoring Large Integers », Math. Comp., vol. 28, no 126,‎ , p. 637-646 (lire en ligne).

Voir aussi

Articles connexes

Lien externe

(en) Eric W. Weisstein, « Fermat's Factorization Method », sur MathWorld

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.