Décomposition en produit de facteurs premiers

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En mathématiques et plus précisément en arithmétique, la décomposition en produit de facteurs premiers, aussi connue comme la factorisation entière en nombres premiers, consiste à chercher à écrire un entier supérieur ou égal à 2 sous forme d'un produit de nombres premiers. Par exemple, si le nombre donné est 45, la factorisation en nombres premiers est : 32× 5, soit 3 × 3 × 5.

Par définition, un nombre premier ne peut pas être décomposé en produit de plusieurs nombres premiers. On peut aussi dire qu'il est sa propre décomposition.

5=5
25 = 5 × 5 = 52
125 = 5 × 5 × 5 = 53
360 = 2 × 2 × 2 × 3 × 3 × 5 = 23 × 32 × 5
1 001 = 7 × 11 × 13
1 010 021 = 17 × 19 × 53 × 59

La factorisation est toujours unique, en accord avec le théorème fondamental de l'arithmétique. L'écriture des nombres entiers en produits de facteurs premiers en facilite la manipulation dans des problèmes de divisibilité, de fraction ou de racine carrée.

La recherche d'algorithmes de décomposition est d'une importance considérable en mathématiques, en cryptologie, en théorie de la complexité des algorithmes, et pour les calculateurs quantiques.

Décomposition en produit de nombres premiers[modifier | modifier le code]

Le théorème fondamental de l'arithmétique permet d'affirmer que tout entier supérieur ou égal à 2 possède une décomposition en facteurs premiers. C'est-à-dire qu'il peut s'écrire de manière unique comme le produit fini de nombres premiers à une puissance adéquate.

Pour tout nombre entier naturel n supérieur ou égal à 2, il existe une suite finie unique (p1, k1) … (pr, kr) telle que :

  1. les pi sont des nombres premiers tels que, si i < j, alors pi < pj ;
  2. les ki sont des entiers naturels non nuls
  3. n est le produit des nombres piki.

Une définition plus formelle de la décomposition en facteurs premiers[1] permet d'attribuer également à l'entier 1 une décomposition unique en facteurs premiers. Elle fait appel à la notion de valuation p-adique.

Pour tout nombre premier p et tout entier naturel n non nul, on détermine le plus grand entier naturel k tel que pk divise n. Cet entier se note vp(n) et s'appelle valuation p-adique de l'entier n.

Ainsi vp(1) = 0 pour tout nombre premier p, v3(45) = 2 et v5(45) = 1.

Si l'on note alors  \mathcal P l'ensemble de tous les nombres premiers, tout entier naturel non nul n peut s'écrire sous la forme du produit

n = \prod_{p\in\mathcal{P}} p^{v_p(n)}.

Les vp(n) étant nuls sauf un nombre fini d'entre eux, ce produit infini est en fait un produit fini. Cette écriture est unique, c'est-à-dire que, s'il existe une famille (\alpha_p)_{p \in \mathcal P} d'entiers naturels, tous nuls sauf un nombre fini d'entre eux, telle que

n = \prod_{p\in\mathcal{P}} p^{\alpha_p},

alors pour tout p, \alpha_p=v_p(n). On appelle alors cette écriture la décomposition en produits de facteurs premiers de n.

Utilisations élémentaires[modifier | modifier le code]

L'écriture d'un entier sous forme d'un produit de facteurs premiers permet de simplifier le travail sur les produits, les multiples et les diviseurs. Elle permet aussi de trouver des formes réduites pour des quotients ou des racines.

Multiples et diviseurs[modifier | modifier le code]

On suppose par la suite que la décomposition de n en produit de facteurs premiers s'écrit

n=\prod_{i=1}^rp_i^{k_i}.

L'entier m est un multiple de n si et seulement si la décomposition de m en produit de facteurs premiers contient au moins tous les pi élevés à une puissance k'i supérieure ou égale à ki.

L'entier d est un diviseur de n si et seulement s'il existe r entiers k'i vérifiant 0 ≤ k'iki tels qued=\prod_{i=1}^rp_i^{k'_i}.

Sous cette forme, il est alors possible de faire l'inventaire de tous les diviseurs de n et d'en déterminer le nombre :

Ainsi les diviseurs de 45 sont : 3^0 5^0,~3^1 5^0,~3^2 5^0,~3^0 5^1,~3^1 5^1,~3^2 5^1, soit 6 diviseurs.

Plus généralement, le nombre de diviseurs de l'entier n=\prod_{i=1}^rp_i^{k_i} est \prod_{i=1}^r(k_i+1), car un diviseur est constitué en choisissant arbitrairement un exposant pour p1 parmi k1 + 1 valeurs (de 0 à k1), un exposant pour p2 parmi k2 + 1 valeurs, etc.

La somme des diviseurs positifs de n est donnée par la formule \sigma(n)=\prod_{i=1}^r\frac{p_i^{k_i + 1}-1}{p_i-1}.

PGCD et PPCM[modifier | modifier le code]

Le PGCD de deux nombres entiers a et b supérieurs ou égaux à 2 a pour décomposition en facteurs premiers le produit des facteurs premiers apparaissant à la fois dans la décomposition de a et de b munis du plus petit des exposants trouvés dans la décomposition de a et de b. Ainsi, {\rm si}\quad a = 2^3\times 3^4\times 5^2\times 7\quad{\rm et}\quad b=2^2\times 3^5\times 7^3\times 11\quad{\rm alors}\quad{\rm pgcd}(a,b) = 2^2\times 3^4\times 7.

Le PPCM de deux nombres entiers a et b supérieurs ou égaux à 2 a pour décomposition en facteurs premiers le produit des facteurs premiers apparaissant dans a ou dans b munis du plus grand des exposants trouvés dans la décomposition de a et de b. Ainsi, {\rm si}\quad a = 2^3\times 3^4\times 5^2\times 7\quad{\rm et}\quad b=2^2\times 3^5\times 7^3\times 11\quad{\rm alors}\quad{\rm ppcm}(a,b) = 2^3\times 3^5\times 5^2\times 7^3\times 11.

Décomposition et valuation[modifier | modifier le code]

L'écriture de la décomposition sous forme d'un produit infini permet de résumer ces calculs en travaillant seulement sur les valuations.

  • Diviseur : d divise n si et seulement si, pour tout nombre premier p, vp(d) ≤ vp(n).
  • Produit : la décomposition en facteurs premiers de ab consiste à faire les somme de valuations :ab = \prod_{p \in \mathcal P}p^{v_p(a)+v_p(b)}.
  • PGCD : \text{pgcd}(a,b)= \prod_{p \in \mathcal P}p^{\min(v_p(a),v_p(b))}.
  • PPCM : \text{ppcm}(a,b)= \prod_{p \in \mathcal P}p^{\max(v_p(a),v_p(b))}.

Formes réduites[modifier | modifier le code]

La décomposition en produit de facteurs premiers peut se révéler utile pour réduire une fraction en fraction irréductible, pour la décomposer en éléments simples, pour réduire deux fractions au même dénominateur ou pour réduire des expressions contenant des racines carrées ou des racines n-ièmes.

Fractions irréductibles[modifier | modifier le code]

Article détaillé : Fraction irréductible.

Pour réduire une fraction sous forme irréductible, il faut simplifier le numérateur et le dénominateur de la fraction par le PGCD de ces deux nombres. Une écriture des nombres en produit de facteurs premiers rend plus évidente la simplification :

\frac{1827}{1050}=\frac{3^2\times 7\times 29}{2\times 3\times 5^2\times 7} = \frac{3\times 29}{2\times 5^2}=\frac{87}{50}

Fractions réduites au même dénominateur[modifier | modifier le code]

Pour réduire deux fractions au même dénominateur, on peut choisir comme dénominateur commun le PPCM des deux dénominateurs. Là aussi la décomposition en produits de facteurs premiers peut se révéler utile :

\frac{5}{28}+\frac{3}{70}=\frac{5}{2^2\times 7}+ \frac{3}{2\times 5\times 7} = \frac{5\times \color{Red} 5}{2^2 \times 7\times \color{Red}{5}}+ \frac{3\times \color{Red}2}{2\times 5\times 7\times \color{Red}2} = \dfrac {31}{2^2\times 5\times 7}=\dfrac{31}{140}

Fractions décomposées en élément simples[modifier | modifier le code]

Toute fraction peut s'écrire comme somme ou différence de fractions dont le dénominateur est une puissance de nombre premier. Sous cette forme, appelée décomposition en éléments simples, il est facile de connaitre un développement décimal périodique de la fraction connaissant les périodes de chacune des fractions élémentaires. La décomposition en éléments simples utilise l'identité de Bézout et la décomposition du dénominateur en facteurs premiers.

\frac{5}{28} = \frac{5}{2^2\times 7}

On cherche alors deux entiers a et b tels que 5=a\times 2^2 + b \times 7. On peut prendre a=-4 et b=3

\frac{5}{28} = \frac{3\times 7 - 4\times 4}{2^2\times 7} = \dfrac34 - \dfrac{4}{7} = 0,75 - 0,\underline{571428}=0,17\underline{857142}

Réduction de racines[modifier | modifier le code]

Tout entier supérieur ou égal à 2 est un carré si tous les exposants de sa décomposition en produit de facteurs premiers sont pairs. Tout entier supérieur ou égal à deux se décompose en produit d'un carré et d'un nombre dont la décomposition en produits de facteurs premiers ne contient que des exposants égaux à 1. Sous cette forme, il est possible d'écrire une racine carrée sous forme irréductible :

\sqrt{4752}=\sqrt{2^4\times 3^3\times 11}=\sqrt{(2^2\times 3)^2\times 3\times 11}=12\sqrt{33}.

Cette propriété se généralise à des racines n-ièmes.

Algorithmes de factorisation[modifier | modifier le code]

S'il existe un algorithme simple à mettre en place pour décomposer un nombre de taille raisonnable, cet algorithme se révèle rapidement inefficace, en termes de temps, pour des très grands nombres. La recherche d'algorithmes performants est donc un objectif de la théorie des nombres

Algorithme naïf[modifier | modifier le code]

Il s'agit tout simplement de balayer la liste des nombres premiers en testant si le nombre premier p divise n. Si oui, on recommence l'algorithme pour n/p, en ne testant que les diviseurs premiers encore envisageables. On s'arrête quand le nombre premier à tester devient supérieur à la racine carrée du nombre qu'il est censé diviser.

Ainsi pour décomposer 2088 en produit de facteurs premiers

2088 2 \, 2 divise 2088 le quotient est 1044
1044 2 2 divise 1044, le quotient est 522
522 2 2 divise 522, le quotient est 261
261 3 2 ne divise pas 261, mais 3 divise 261 et le quotient est 87
87 3 3 divise 87 et le quotient est 29
29 ni 3, ni 5 ne divisent 29 et 7² est plus grand que 29 (fin)

2088=2^3\times 3^2\times 29

Applications pratiques[modifier | modifier le code]

Soient deux grands nombres premiers donnés, il est facile d'en obtenir le produit. Par contre, il est beaucoup plus difficile de trouver les facteurs premiers de celui-ci. C'est ce que l'on appelle une fonction trappe. Ceci s'applique pour les systèmes modernes en cryptologie. Si une méthode rapide était trouvée pour résoudre le problème de la factorisation des nombres entiers, alors plusieurs systèmes cryptologiques importants seraient cassés, incluant l'algorithme à clé publique RSA et le générateur de nombres pseudo-aléatoires Blum Blum Shub. La mise au point d'un ordinateur quantique est une de ces méthodes.

Bien que la factorisation soit une manière de casser ces systèmes, il peut exister d'autres manières de les casser qui n'impliquent pas la factorisation. Ainsi, il est possible que le problème de la factorisation entière soit vraiment difficile, mais ces systèmes peuvent quand même être cassés rapidement. Une exception rare est le générateur Blum Blum Shub. Il a été prouvé qu'il est exactement aussi difficile que la décomposition en produit de facteurs premiers : si vous pouvez casser le générateur en temps polynomial alors, vous pouvez factoriser les entiers en temps polynomial, et vice versa.

État actuel de l'art[modifier | modifier le code]

Si un grand nombre à n-bit est le produit de deux nombres premiers qui sont probablement de la même taille, alors aucun algorithme n'est actuellement connu pour pouvoir le factoriser en temps polynomial. Ce qui veut dire qu'il n'existe pas d'algorithme connu pouvant le factoriser en temps O(nk) quelle que soit la constante k. Il existe des algorithmes, néanmoins, qui sont aussi rapides que Θ(en). En d'autres termes, les meilleurs algorithmes connus sont sous-exponentiels, mais super-polynômiaux. En particulier, le meilleur algorithme connu s'exécutant en temps asymptotique est le crible général de corps de nombres (GNFS).

Pour un ordinateur ordinaire, GNFS est le meilleur algorithme connu pour les grands n. Pour un calculateur quantique, en revanche, Peter Shor a découvert un algorithme en 1994 qui le résout en temps polynomial. Ceci aura des implications significatives pour la cryptologie si un grand calculateur quantique est construit un jour. L'algorithme de Shor prend seulement O(n3) de temps et O(n) d'espace. Les formes de l'algorithme sont connues pour utiliser seulement 2n qubits. En 2001, le premier calculateur quantique 7-qubit devint le premier à exécuter l'algorithme de Shor. Il factorisa le nombre 15[2].

Article détaillé : Algorithme de Shor.

Difficulté et complexité[modifier | modifier le code]

On ne connaît pas exactement quelles classes de complexité contiennent le problème de la décomposition en produit de facteurs premiers. Le problème de décision de forme « N admet-il un facteur premier inférieur à M ? » est connu pour être à la fois NP et co-NP. Ceci parce que les réponses OUI et NON peuvent être données en temps polynomial si les facteurs premiers sont donnés : on peut vérifier leur primalité grâce au test de primalité AKS, puis vérifier que leur produit vaut N, et enfin vérifier si l'un des facteurs est inférieur à M.

Le problème de la décomposition est connu comme étant dans BQP à cause de l'algorithme de Shor. Il est suspecté, comme le problème de l'isomorphisme de graphes, d'être strictement entre les classes P et NP-complet (ou co-NP-complet). S’il peut être démontré qu'il est NP-Complet ou co-NP-Complet, cela impliquerait NP = co-NP. Ce serait un résultat très surprenant, par conséquent la factorisation entière est largement suspectée d'être en dehors de ces classes. Beaucoup de personnes ont essayé de trouver des algorithmes en temps polynomial pour cela et ont échoué ; par conséquent, ce problème est largement suspecté d'être également en dehors de P.

De manière intéressante, le problème de décision « N est-il un nombre composé ? » (ou de façon équivalente : « N est-il un nombre premier ? ») apparaît comme étant plus facile que le problème consistant à trouver les facteurs de N. Plus précisément, la question ci-dessus peut être résolue en temps polynomial (en nombre n des chiffres de N)[3]. De plus, il existe un nombre d'algorithmes probabilistes qui peuvent tester la primalité d'un nombre très rapidement si l'un d'eux est susceptible d'accepter une petite possibilité d'erreur. La facilité de test d'un nombre premier est une partie cruciale de l'algorithme RSA, comme il est nécessaire de trouver de grands nombres premiers à utiliser avec lui.

But spécial[modifier | modifier le code]

Les temps d'exécution des algorithmes de factorisation à but spécial dépend des propriétés de ses facteurs inconnus : taille, forme spéciale, etc. De manière exacte, le temps d'exécution dépend de ce qui varie entre les algorithmes.

But général[modifier | modifier le code]

Le temps d'exécution des algorithmes de factorisation à but général dépend seulement de la taille de l'entier à factoriser. Ceci est le type d'algorithme utilisé pour factoriser les nombres RSA. La plupart des algorithmes de factorisation à but général sont basés sur la méthode des congruence de carrés.

Notes et références[modifier | modifier le code]

  1. Louis Comtet, Analyse combinatoire élémentaire, chap 1.4, p. 68.
  2. (en) Lieven M. K. Vandersypen et al., « NMR quantum computing: Realizing Shor's algorithm », Nature,‎ 27 décembre 2007 (lire en ligne).
  3. (en) Manindra Agrawal, Nitin Saxena et Neeraj Kayal, « PRIMES is in P », Ann. Math., vol. 160, no 2,‎ 2004, p. 781-793 (lire en ligne).