Bonjour à tous.

Je souhaiter créer une macro qui prendrait comme argument un nombre entier positif et afficherait sa décomposition en facteurs premiers.

Voici ce que j'ai créé:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
\documentclass{article}
\usepackage[frenchb]{babel}
\usepackage{Fp}
\usepackage{xstring}
\usepackage{multido}
\usepackage{ifthen}
\usepackage{amsmath}
\usepackage[load-configurations = abbreviations]{siunitx}% utiliser commande \num pour écriture correcte des nombres
\sisetup{locale = FR,detect-all,}
%
%
\newcommand*\eaddto[2]{%
\edef\tmp{#2}%
\expandafter\addto
\expandafter#1%
\expandafter{\tmp}
}
%
%
\begin{document}
\FPeval{\a}{clip(1547)}
\FPeval{\b}{clip(\a)}
%
\FPeval{\compteur}{clip(2)}
%
\whiledo{\b>1}{%
\FPeval{\q}{round(\b/\compteur,5)}
\IfInteger{\q}{%
			\eaddto\listdiv{{\compteur}}%
			\FPeval{\b}{clip(\q)}%
			\eaddto\listquo{{\q}}%
			}{%
			\FPeval{\compteur}{clip(1+\compteur)}%
			}
			}
%
%
% Affichage
\StrLen{\listdiv}[\c] % longueur chaine
\FPeval{\cbis}{clip(\c-1)}
%
%
\begin{align*}
	\num{\a} & =\multido{\n=1+1}{\cbis}{\StrChar{\listdiv}{\n}\times}\StrChar{\listdiv}{\c}\\
\end{align*}
\end{document}
Ce programme fonctionne mais il ne me satisfait pas entièrement parce que j'aurai voulu ne pas afficher uniquement la décomposition, mais également les différentes étapes de calcul.
Quand je remplace la commande dans les balises align* par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
\multido{\n=1+1}{\c}{%
\num{\a} & = \multido{\m=1+1}{\n}{\StrChar{\listdiv}{\m}\times} \StrChar{\listquo}{\n}\\
}
j'ai un message d'erreur. J'en ai déduis qu'on ne pouvait pas cumuler les multido. Mais je n'ai pas trouvé d'autres solutions.
Quelqu'un aurait une piste ?