diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes')
4 files changed, 270 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/erato-def.tex b/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/erato-def.tex new file mode 100644 index 00000000000..26e3d94f864 --- /dev/null +++ b/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/erato-def.tex @@ -0,0 +1,103 @@ +% Time-stamp: <2019-08-26 11:48:16 administrateur> +% ReCréation : 2019-08-23T10:40:31+0200 +\ExplSyntaxOn + +\NewDocumentCommand{ \eratosthene } { m } { + \group_begin: + \int_new:N \l_ERA_diviseur_max_int + \int_set:Nn \l_ERA_diviseur_max_int { \fp_to_int:n { floor( sqrt ( #1 ))} } + \intarray_new:Nn \__ERA_qt_ia { #1 } + \intarray_new:Nn \__ERA_dv_ia { #1 } + % commande auxiliaire -------------------------------------------------------- + \cs_set:Nn \ERA_marquer_de_a_par:nnn { + \int_set:Nn \l_tmpa_int { ##1 / ##3} + + \int_step_inline:nnnn { ##1 } { ##3 } { ##2 } { + \int_compare:nNnT { \intarray_item:Nn \__ERA_dv_ia { ####1 } } = { 0 } + { \intarray_gset:Nnn \__ERA_dv_ia { ####1 } { ##3 } + \intarray_gset:Nnn \__ERA_qt_ia { ####1 } { \l_tmpa_int } } + \int_incr:N \l_tmpa_int } + } + % ---------------------------------------------------------------------------- + % marquer les pairs + \int_set:Nn \l_tmpa_int { 1 } + + \int_step_inline:nnnn { 2 } { 2 } { #1 } + { \intarray_gset:Nnn \__ERA_dv_ia { ##1 } { 2 } + \intarray_gset:Nnn \__ERA_qt_ia { ##1 } { \l_tmpa_int } + \int_incr:N \l_tmpa_int } + + % marquer les impairs jusqu'à racine de #1 + \int_set:Nn \l_tmpb_int { 3 } + + \int_while_do:nNnn { \l_tmpb_int } < { \l_ERA_diviseur_max_int } + { \ERA_marquer_de_a_par:nnn { \l_tmpb_int } { #1 } { \l_tmpb_int } + \int_do_until:nNnn {\intarray_item:Nn \__ERA_dv_ia { \l_tmpb_int }} = { 0 } + { \int_add:Nn \l_tmpb_int { 2 } } } + + % marquer les derniers impairs + \int_step_inline:nnnn { 3 } { 2 } { #1 } + { \int_compare:nNnT { \intarray_item:Nn \__ERA_dv_ia { ##1 } } = { 0 } + { \intarray_gset:Nnn \__ERA_dv_ia { ##1 } { ##1 } + \intarray_gset:Nnn \__ERA_qt_ia { ##1 } { 1 } } } + + % nettoyage + \cs_undefine:N \l_ERA_diviseur_max_int + \group_end: } + +%%% ----------------------------------------------------------------------- + +\cs_new:Nn \ERA_presenter_nieme:n { + \group_begin: + \int_set:Nn \l_tmpa_int { \intarray_item:Nn \__ERA_qt_ia { #1 } } + \int_set:Nn \l_tmpb_int { \int_mod:nn { #1 } { 10 } } + + \framebox[4em] {\strut \footnotesize + \int_compare:nNnTF { \l_tmpa_int } = { 1 } + {\textbf} % premier + {\textcolor{gray}} % composé + {\int_to_arabic:n { #1 }} + \int_compare:nNnT { \l_tmpa_int } > { 1 } + { \int_set:Nn \l_tmpa_int { \intarray_item:Nn \__ERA_dv_ia { #1 } } + ~\({}^{\langle \int_to_arabic:n { \l_tmpa_int } \rangle}\) } } + \kern-\fboxrule + % saut de paragraphe tous les 10 + \int_compare:nNnT { \l_tmpb_int } = { 0 } + { \par \nointerlineskip \kern-\fboxrule \noindent } + \group_end: } + +\NewDocumentCommand { \EcrireCribleEratosthene } { m }{ + \par \noindent \int_step_inline:nn { #1 } { \ERA_presenter_nieme:n {##1} } } + + +\NewDocumentCommand { \EcrireDiviseurs } { s m } { + \group_begin: + \int_new:N \l_ERA_nv_qt_int % quotient + \int_set:Nn \l_ERA_nv_qt_int { #2 } + \int_new:N \l_ERA_vx_dv_int % ancient diviseur + \int_set:Nn \l_ERA_vx_dv_int { 0 } + \int_new:N \l_ERA_nv_dv_int % nouveau diviseur + \int_set:Nn \l_ERA_nv_dv_int { \intarray_item:Nn \__ERA_dv_ia { #2 } } + + \IfBooleanF{#1}{\par} + \( \int_to_arabic:n { #2 } = + \int_while_do:nNnn { \l_ERA_nv_qt_int } > { 1 } + { \int_compare:nNnT { \l_ERA_vx_dv_int } > { 0 } { \times } + \int_to_arabic:n { \l_ERA_nv_dv_int } + \int_set:Nn \l_ERA_vx_dv_int { \l_ERA_nv_dv_int } + \int_set:Nn \l_ERA_nv_qt_int { + \intarray_item:Nn \__ERA_qt_ia { \l_ERA_nv_qt_int } } + \int_set:Nn \l_ERA_nv_dv_int { + \intarray_item:Nn \__ERA_dv_ia { \l_ERA_nv_qt_int } } } + \) + \cs_undefine:N \l_ERA_nv_qt_int + \cs_undefine:N \l_ERA_vx_dv_int + \cs_undefine:N \l_ERA_nv_dv_int + \group_end: } + +\ExplSyntaxOff + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/henel-def.tex b/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/henel-def.tex new file mode 100644 index 00000000000..0beae24a670 --- /dev/null +++ b/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/henel-def.tex @@ -0,0 +1,66 @@ +% Time-stamp: <2019-08-07 10:59:31 administrateur> +% Création : 2019-05-20T11:51:49+0200 +\ExplSyntaxOn + +\cs_new:Nn \__yh_ecrire_nombre:n { \(\np{\int_to_arabic:n{ #1 }}\) } + +\cs_new:Nn \yh_impair_est_premier:nT { + \bool_set_true:N \yh_continue_bool + \bool_set_true:N \yh_est_premier_bool + \int_set:Nn \l_tmpa_int {1} + % FIN INITIALISATION + \bool_do_while:Nn \yh_continue_bool { % BOUCLE `TANTQUE' + % INCRÉMENTATION + \int_add:Nn \l_tmpa_int { 2 } + \bool_if:nTF { + % TEST de divisibilité + \int_compare_p:nNn { \int_mod:nn {#1} { \l_tmpa_int } } = { 0 } + } { % SI VRAI + \bool_set_false:N \yh_continue_bool + \bool_gset_false:N \yh_est_premier_bool + } { % SI FAUX + \int_compare:nNnT { \l_tmpa_int * \l_tmpa_int } > { #1 } + { \bool_set_false:N \yh_continue_bool } + } } % FIN DU SI ET FIN DE LA BOUCLE + \bool_if:nT {\yh_est_premier_bool} {#2} } + +\cs_new:Nn \yh_ecrire_separateur:n { } + +\cs_new:Nn \yh_ecrire_si_premier:n { + \yh_impair_est_premier:nT { #1 } + { \yh_ecrire_separateur:n { #1 } + \__yh_ecrire_nombre:n { #1 } } } + +\NewDocumentCommand { \ListePremiers } { m } { + \group_begin: + % INITIALISATION + \int_new:N \l_compteur_int + \int_new:N \l_nombre_requis + \int_set:Nn \l_compteur_int { 2 } + \int_set:Nn \l_nombre_requis { #1 } + \cs_set:Nn \yh_ecrire_separateur:n { + \int_compare:nNnTF { ##1 } < { \l_nombre_requis - 1} {,~} {~et~} } + % LES DEUX PREMIERS NOMBRES PREMIERS NE SONT PAS CALCULÉS + \__yh_ecrire_nombre:n {2} + \yh_ecrire_separateur:n {1} + \__yh_ecrire_nombre:n {3} + % PRÉPARATION DE LA BOUCLE, \l_tmpb_int EST LE CANDIDAT À TESTER + \int_set:Nn \l_tmpb_int { 3 } + % BOUCLE `TANT QUE' + \int_while_do:nNnn { \l_compteur_int } < { \l_nombre_requis } { + \int_add:Nn \l_tmpb_int { 2 } + \yh_impair_est_premier:nT { \l_tmpb_int } + { \yh_ecrire_separateur:n { \l_compteur_int } + \__yh_ecrire_nombre:n{ \l_tmpb_int } + \int_incr:N \l_compteur_int } } + % ON FAIT LE MÉNAGE AVANT DE SORTIR + \cs_undefine:N \l_compteur_int + \cs_undefine:N \l_nombre_requis + \group_end: } + +\ExplSyntaxOff + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/kaprekar-def.tex b/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/kaprekar-def.tex new file mode 100644 index 00000000000..097279d8fe9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/kaprekar-def.tex @@ -0,0 +1,81 @@ +% Time-stamp: <2019-08-28 11:48:38 administrateur> +% ReCréation : 2019-08-26T12:32:29+0200 +\ExplSyntaxOn +\seq_new:N \kaprun_seq +\seq_new:N \kaprekar_seq +\int_new:N \l_tmpc_int + + +\cs_new:Nn \KAP_int_to_seq:NN { + \int_set:Nn \l_tmpa_int { #1 } + \int_do_until:nNnn { \l_tmpa_int } = { 0 } + { \int_set:Nn \l_tmpb_int { \int_mod:nn { \l_tmpa_int } { 10 } } + \seq_put_left:NV #2 \l_tmpb_int + \int_set:Nn \l_tmpa_int + { \int_div_truncate:nn { \l_tmpa_int - \l_tmpb_int } { 10 } } } } + +\cs_new:Nn \KAP_seq_to_int:NN { + \seq_pop_right:NNT #1 \l_tmpa_tl + { \int_set:Nn #2 { \l_tmpa_tl } + \bool_do_until:nn { \seq_if_empty_p:N #1 } + { \seq_pop_right:NNT #1 \l_tmpa_tl + \int_set:Nn #2 { 10 * #2 + \l_tmpa_tl } } } } + +\cs_new:Nn \KAP_remplir_seq:Nn { + \int_while_do:nNnn { \seq_count:N #1 } < { #2 } + { \seq_put_left:Nn #1 { 0 } } } + +\cs_new:Nn \KAP_ranger_seq:N { + \seq_sort:Nn #1 + { \int_compare:nNnTF { ##1 } > { ##2 } + { \sort_return_swapped: } + { \sort_return_same: } } } + +\cs_new:Nn \KAP_suivant:nNN { + \KAP_int_to_seq:NN #2 \kaprun_seq + \KAP_remplir_seq:Nn \kaprun_seq { #1 } + \KAP_ranger_seq:N \kaprun_seq + + \seq_set_eq:NN \kaprdx_seq \kaprun_seq + \seq_reverse:N \kaprdx_seq + + \KAP_seq_to_int:NN \kaprdx_seq \l_tmpa_int + \KAP_seq_to_int:NN \kaprun_seq \l_tmpb_int + \int_set:Nn #3 { \l_tmpb_int - \l_tmpa_int } } + +\cs_new:Nn \KAP_ecrire_tous_les_suivants:nn { + \group_begin: + \bool_set_true:N \l_tmpa_bool + \seq_clear:N \kaprekar_seq + \int_set:Nn \l_tmpc_int { #2 } + \seq_put_right:NV \kaprekar_seq \l_tmpc_int + \KAP_suivant:nNN {#1} \l_tmpc_int \l_tmpc_int + \seq_if_in:NVT \kaprekar_seq \l_tmpc_int {\bool_set_false:N \l_tmpa_bool} + \bool_while_do:nn { \l_tmpa_bool } + { \seq_put_right:NV \kaprekar_seq \l_tmpc_int + \KAP_suivant:nNN {#1} \l_tmpc_int \l_tmpc_int + \seq_if_in:NVT \kaprekar_seq \l_tmpc_int { \bool_set_false:N \l_tmpa_bool } } + % \seq_show:N \kaprekar_seq + % \seq_use:Nnnn \kaprekar_seq {~et~} {,~} {~et~}\par{} + \int_set:Nn \l_tmpa_int { \seq_count:N \kaprekar_seq } + \seq_map_inline:Nn \kaprekar_seq + { \( \np{##1} \) + \int_decr:N \l_tmpa_int + \int_case:nnF { \l_tmpa_int } + { + { 1 } {~et~} + { 0 } { } + } + {~;~} + } + \group_end: } + +\NewDocumentCommand{\Kaprekar}{ O{4} m }{ + \KAP_ecrire_tous_les_suivants:nn { #1 } { #2 } } + +\ExplSyntaxOff +%%% Local Variables: +%%% coding: utf-8 +%%% mode: latex +%%% TeX-master: "../dun19expl3" +%%% End: diff --git a/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/knuth-def.tex b/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/knuth-def.tex new file mode 100644 index 00000000000..34c771501e1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/expose-expl3-dunkerque-2019/codes/knuth-def.tex @@ -0,0 +1,20 @@ +\newif\ifprime \newif\ifunknown +\newcount\n \newcount\p +\newcount\d \newcount\a + +\def \primes#1{2,~3\n=#1 \advance \n by-2 \p=5 + \loop \ifnum \n>0 \printifprime \advance \p by2 \repeat} + +\def \printp{, \ifnum \n=1 and~\fi + \number \p \advance \n by -1 } + +\def \printifprime{\testprimality \ifprime\printp\fi} + +\def \testprimality{{\d=3 \global \primetrue + \loop \trialdivision \ifunknown \advance \d by2 \repeat}} + +\def \trialdivision{\a=\p \divide \a by\d + \ifnum \a>\d \unknowntrue \else \unknownfalse \fi + \multiply \a by\d \ifnum \a=\p \global \primefalse \unknownfalse \fi} + +\endinput
\ No newline at end of file |