%%% % Criteres de divisibilite %%% \def\filedateCritere{2025/07/13}% \def\fileversionCritere{0.1a}% \message{-- \filedateCritere\space v\fileversionCritere}% % \setKVdefault[Critere]{Div=2,Remarque=false,All=false,RemarqueAll=false} \makeatletter \NewDocumentCommand\Critere{om}{% \useKVdefault[Critere]% \setKV[Critere]{#1}% \edef\PfC@ListeARetenirCriteres{}% \ifboolKV[Critere]{All}{% \begin{itemize} \item \PfC@CritereDeux{#2}% \item \PfC@CritereTrois{#2} \item \PfC@CritereQuatre{#2} \item \PfC@CritereCinq{#2} \item \PfC@CritereNeuf{#2} \item \PfC@CritereDix{#2} \end{itemize} \ifx\bla\PfC@ListeARetenirCriteres\bla% \else \setsepchar{,}\ignoreemptyitems% \readlist*\PfC@AfficheDivCriteres{\PfC@ListeARetenirCriteres}% \reademptyitems% \edef\PfC@NumListe{}% En appliquant les critères de divisibilité connus, \num{#2} est donc divisible par \num{\PfC@AfficheDivCriteres[1]}% \xintifboolexpr{\PfC@AfficheDivCritereslen>1}{\xintFor* ##1 in{\xintSeq{2}{\PfC@AfficheDivCritereslen}}\do{% \xintifForLast{ et }{ ; }\num{\PfC@AfficheDivCriteres[##1]}% }% }{}.% \ifboolKV[Critere]{RemarqueAll}{\\\textbf{Remarque} : La liste des diviseurs de \num{#2} est \ListeDiviseur{#2}.}{}% \fi% }{% \edef\PfC@ListeDesCriteresATesterAv{\useKV[Critere]{Div}}% \setsepchar{,}\ignoreemptyitems% \readlist*\PfC@ListeDesCriteresATester{\PfC@ListeDesCriteresATesterAv}% \reademptyitems% \foreachitem\PfC@DivTest\in\PfC@ListeDesCriteresATester{% \IfStrEqCase{\PfC@DivTest}{% {2}{\PfC@CritereDeux{#2}}% {3}{\PfC@CritereTrois{#2}}% {4}{\PfC@CritereQuatre{#2}}% {5}{\PfC@CritereCinq{#2}}% {9}{\PfC@CritereNeuf{#2}}% {10}{\PfC@CritereDix{#2}}% }\par% }% }% }% \NewDocumentCommand\PfC@CritereDeux{m}{% \StrRight{#1}{1}[\PfC@CriDeuxUnite]% Le chiffre des unités de \num{#1} est \num{\PfC@CriDeuxUnite}. Donc \num{#1} % \modulo{\PfC@CriDeuxUnite}{2}% \ifnum\remainder=0\relax% est divisible par 2.% \ifboolKV[Critere]{Remarque}{\\\textbf{Remarque} : $\num{#1}=\num{\fpeval{#1/2}}\times2$.}{}% \edef\PfC@ListeARetenirCriteres{\PfC@ListeARetenirCriteres,2}% \else% n'est pas divisible par 2.% \fi% }% \NewDocumentCommand\PfC@CritereTrois{m}{% La somme des chiffres de \num{#1} est \PfCSommeChiffres{#1}. Comme \num{\PfCSMSomme} % \modulo{\PfCSMSomme}{3}% \ifnum\remainder=0\relax% est divisible par 3, alors \num{#1} est aussi divisible par 3.% \ifboolKV[Critere]{Remarque}{\\\textbf{Remarque} : $\num{#1}=\num{\fpeval{#1/3}}\times3$.}{}% \edef\PfC@ListeARetenirCriteres{\PfC@ListeARetenirCriteres,3}% \else% n'est pas divisible par 3, alors \num{#1} n'est pas divisible par 3.% \fi% }% \NewDocumentCommand\PfC@CritereQuatre{m}{% \ifnum#1<100% \quotient{#1}{4}% \modulo{#1}{4}% \ifnum\remainder=0\relax Comme $\num{#1}=\num{\the\intquotient}\times4$ alors \num{#1} est divisible par 4. \edef\PfC@ListeARetenirCriteres{\PfC@ListeARetenirCriteres,4}% \else Comme $\num{#1}=\num{\the\intquotient}\times4+\num{\the\remainder}$ alors \num{#1} n'est pas divisible par 4. \fi \else \StrRight{#1}{2}[\PfC@CriQuatreUnite]% \num{#1} se termine par \num{\PfC@CriQuatreUnite}. % \modulo{\PfC@CriQuatreUnite}{4}% \ifnum\remainder=0\relax% Comme \num{\PfC@CriQuatreUnite} est divisible par 4, alors \num{#1} est divisible par 4.% \ifboolKV[Critere]{Remarque}{\\\textbf{Remarque} : $\num{#1}=\num{\fpeval{#1/4}}\times4$.}{}% \edef\PfC@ListeARetenirCriteres{\PfC@ListeARetenirCriteres,4}% \else% Comme \num{\PfC@CriQuatreUnite} n'est pas divisible par 4, alors \num{#1} n'est pas divisible par 4.% \fi% \fi }% \NewDocumentCommand\PfC@CritereCinq{m}{% \StrRight{#1}{1}[\PfC@CriCinqUnite]% Le chiffre des unités de \num{#1} est \num{\PfC@CriCinqUnite}. Donc \num{#1} % \modulo{\PfC@CriCinqUnite}{5}% \ifnum\remainder=0\relax% est divisible par 5.% \ifboolKV[Critere]{Remarque}{\\\textbf{Remarque} : $\num{#1}=\num{\fpeval{#1/5}}\times5$.}{}% \edef\PfC@ListeARetenirCriteres{\PfC@ListeARetenirCriteres,5}% \else% n'est pas divisible par 5.% \fi% }% \NewDocumentCommand\PfC@CritereNeuf{m}{% La somme des chiffres de \num{#1} est \PfCSommeChiffres{#1}. Comme \num{\PfCSMSomme} % \modulo{\PfCSMSomme}{9}% \ifnum\remainder=0\relax% est divisible par 9, alors \num{#1} est aussi divisible par 9.% \ifboolKV[Critere]{Remarque}{\\\textbf{Remarque} : $\num{#1}=\num{\fpeval{#1/9}}\times9$.}{}% \edef\PfC@ListeARetenirCriteres{\PfC@ListeARetenirCriteres,9}% \else% n'est pas divisible par 9, alors \num{#1} n'est pas divisible par 9.% \fi% }% \NewDocumentCommand\PfC@CritereDix{m}{% \StrRight{#1}{1}[\PfC@CriDixUnite]% Le chiffre des unités de \num{#1} est \num{\PfC@CriDixUnite}. Donc \num{#1} % \ifnum\PfC@CriDixUnite=0\relax est divisible par 10.% \ifboolKV[Critere]{Remarque}{\\\textbf{Remarque} : $\num{#1}=\num{\fpeval{#1/10}}\times10$.}{}% \edef\PfC@ListeARetenirCriteres{\PfC@ListeARetenirCriteres,10}% \else% n'est pas divisible par 10.% \fi% }% \makeatother