# Décomposition en produit de facteurs premiers

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 ou encore plus couramment la décomposition en facteurs premiers, consiste à chercher à écrire un entier naturel non nul sous forme d'un produit de nombres premiers. Par exemple, si le nombre donné est 45, la factorisation en nombres premiers est 3$^2$ × 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. Quant au nombre 1, c'est le produit vide.
5 = 5 25 = 5 × 5 = 5$^2$ 125 = 5 × 5 × 5 = 5$^3$ 360 = 2 × 2 × 2 × 3 × 3 × 5 = 2$^3$ × 3$^2$ × 5 861 = 3 × 7 × 41 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. En 2020, un nombre de 250 chiffres (RSA-250) a été décomposé en facteurs premiers en utilisant environ 2700 cœurs.ans de calcul.

## Décomposition en produit de nombres premiers

Le théorème fondamental de l'arithmétique permet d'affirmer que tout entier strictement positif possède une unique 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 à 1, il existe une suite finie unique (p$_1$, k$_1$) … (p$_r$, k$_r$) telle que :
* les p$_i$ sont des nombres premiers tels que, si i < j, alors p$_i$ < p$_j$ ;
* les k$_i$ sont des entiers naturels non nuls ;
* n est le produit des nombres pk$_i$ i.
Une définition plus formelle de la décomposition en facteurs premiers 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 p$^k$ divise n. Cet entier se note v$_p$(n) et s'appelle valuation p-adique de l'entier n.
Ainsi v$_p$(1) = 0 pour tout nombre premier p, v$_3$(45) = 2 et v$_5$(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 v$_p$(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, α$_p$ = v$_p$(n). On appelle alors cette écriture la décomposition de n en produit de facteurs premiers.

## Utilisations élémentaires

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

On suppose par la suite que la décomposition de n en produit de facteurs premiers s'écrit
$n=\prod _{i=1}^{r}p_{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 p$_i$ élevés à une puissance k'$_i$ supérieure ou égale à k$_i$.
L'entier d est un diviseur de n si et seulement s'il existe r entiers k$_i$' vérifiant 0 ≤ k'$_i$ ≤ k$_i$ tels que $d=\prod _{i=1}^{r}p_{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}^{r}p_{i}^{k_{i}}$ est $\prod _{i=1}^{r}(k_{i}+1),$ car un diviseur est constitué en choisissant arbitrairement un exposant pour p$_1$ parmi k$_1$ + 1 valeurs (de 0 à k$_1$), un exposant pour p$_2$ parmi k$_2$ + 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

Le PGCD (plus grand commun diviseur) 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. Autrement dit, pour tout nombre premier p, v$_p$(pgcd(a,b)) = min(v$_p$(a),v$_p$(b)), où v$_p$ est la valuation p-adique. 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 (plus petit commun multiple) 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. Autrement dit, pour tout nombre premier p, v$_p$(ppcm(a,b)) = max(v$_p$(a),v$_p$(b)), où v$_p$ est la valuation p-adique. 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

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, v$_p$(d) ≤ v$_p$(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

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

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

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

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 × 2$^2$ + b × 7. On peut prendre a = –4 et b = 3. ${\frac {5}{28}}{=}{\frac {3\times 7-4\times 4}{2^{2}\times 7}}{=}{\dfrac {3}{4}}-{\dfrac {4}{7}}=0,75-0,{\underline {571428}}=0,17{\underline {857142}}$

#### Réduction de racines

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

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

La première idée consiste à 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$^2$ est plus grand que 29 (fin) |
On obtient la décomposition attendue : 2088=2$^3$ × 3$^2$ × 29.

### Applications pratiques

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 que ces systèmes puissent 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 : savoir casser le générateur en temps polynomial suffit pour savoir factoriser les entiers en temps polynomial, et vice versa.

### État actuel de l'art

Si un grand nombre à n bits 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(n$^k$) quelle que soit la constante k. Il existe des algorithmes, néanmoins, qui sont aussi rapides que Θ(e$^n$). En d'autres termes, les meilleurs algorithmes connus sont sous-exponentiels, mais super-polynomiaux. En particulier, le meilleur algorithme connu 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(n$^3$) 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.

### Difficulté et complexité

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). 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

Le 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.
* Divisions successives
* Algorithme rho de Pollard
* Algorithme p-1 de Pollard
* Factorisation en courbe elliptique de Lenstra
* Congruence de carrés (Méthode de factorisation de Fermat)
* Crible spécial de corps de nombres (SNFS)

### But général

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.
* Crible quadratique
* Crible général de corps de nombres (GNFS)