summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex')
-rw-r--r--macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex63
1 files changed, 57 insertions, 6 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex b/macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex
index c88c18363c..3399cbecff 100644
--- a/macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex
+++ b/macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex
@@ -1,7 +1,7 @@
%%%
% Tables Addition-Multiplication
%%%
-\setKVdefault[Tables]{Addition=false,Soustraction=false,Multiplication,Seul=false,Debut=0,Fin=10,Couleur=white}
+\setKVdefault[Tables]{Addition=false,Soustraction=false,Multiplication,Seul=false,Debut=0,Fin=10,Couleur=white,Inverse=false}
% pour m\'emoire
\newcommand\TableMultiplicationComplete{%
@@ -95,17 +95,68 @@
}%
}%
+\NewDocumentCommand\PfCTableInverse{om}{%
+ % #1 paramètres
+ % #2 dizaine concernée
+ \useKVdefault[Tables]%
+ \setKV[Tables]{#1}%
+ \ifnum#2=0\relax%
+ \xdef\TIDepart{2}%
+ \else%
+ \xdef\TIDepart{\fpeval{#2*10}}%
+ \fi%
+ \xdef\TIFin{\fpeval{#2*10+9}}%
+ % On sauvegarde les nombres non premiers de la dizaine
+ \xdef\PfCRetiensNonPremiersInv{}%
+ \xintFor* ##1 in{\xintSeq{\TIDepart}{\TIFin}}\do{%
+ \TestPremier{##1}%
+ \ifboolKV[ClesEra]{Premier}{}{%
+ \xdef\PfCRetiensNonPremiersInv{\PfCRetiensNonPremiersInv##1,}%
+ }%
+ }%
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeNombresRetenus{\PfCRetiensNonPremiersInv}%
+ \reademptyitems%
+ \xdef\PfCRetiensIntermediaire{}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeNombresRetenuslen}}\do{%
+ \xdef\PfCRetiensIntermediaire{\PfCRetiensIntermediaire,\ListeNombresRetenus[##1]}%
+ \xintFor* ##2 in{\xintSeq{2}{\fpeval{floor(sqrt(\ListeNombresRetenus[##1]))}}}\do{%
+ \modulo{\ListeNombresRetenus[##1]}{##2}%
+ \ifnum\remainder=0\relax%
+ \xdef\PfCRetiensIntermediaire{\PfCRetiensIntermediaire/##2}%
+ \fi%
+ }%
+ }%
+ \setsepchar[*]{,*/}\ignoreemptyitems%
+ \readlist*\ListeNombresRetenusInd{\PfCRetiensIntermediaire}%
+ \reademptyitems%
+ \ensuremath{%
+ \begin{array}[t]{ccrcl}%
+ \xintFor* ##1 in{\xintSeq{1}{\ListeNombresRetenusIndlen}}\do{%
+ \xintifForFirst{}{\\}%
+ \xintFor* ##2 in{\xintSeq{2}{\listlen\ListeNombresRetenusInd[##1]}}\do{%
+ \num{\ListeNombresRetenusInd[##1,1]}\uppercase{&}=\uppercase{&}\num{\ListeNombresRetenusInd[##1,##2]}\uppercase{&}\times\uppercase{&}\quotient{\ListeNombresRetenusInd[##1,1]}{\ListeNombresRetenusInd[##1,##2]}\num{\the\intquotient}\\%
+ }
+ }
+ \end{array}%
+ }%
+}%
+
\newcommand\Tables[2][]{%
\useKVdefault[Tables]%
\setKV[Tables]{#1}%
\ifboolKV[Tables]{Seul}{%
- \ifboolKV[Tables]{Soustraction}{%
- \TableSoustractionSeule{#2}%
+ \ifboolKV[Tables]{Inverse}{%
+ \PfCTableInverse[#1]{#2}%
}{%
- \ifboolKV[Tables]{Addition}{%
- \TableAdditionSeule{#2}%
+ \ifboolKV[Tables]{Soustraction}{%
+ \TableSoustractionSeule{#2}%
}{%
- \TableMultiplicationSeule{#2}%
+ \ifboolKV[Tables]{Addition}{%
+ \TableAdditionSeule{#2}%
+ }{%
+ \TableMultiplicationSeule{#2}%
+ }%
}%
}%
}{%