diff options
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex')
-rw-r--r-- | macros/latex/contrib/profcollege/latex/PfCTablesOperations.tex | 63 |
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}% + }% }% }% }{% |