summaryrefslogtreecommitdiff
path: root/info/expose-expl3-dunkerque-2019/codes/knuth-def.tex
diff options
context:
space:
mode:
Diffstat (limited to 'info/expose-expl3-dunkerque-2019/codes/knuth-def.tex')
-rw-r--r--info/expose-expl3-dunkerque-2019/codes/knuth-def.tex20
1 files changed, 20 insertions, 0 deletions
diff --git a/info/expose-expl3-dunkerque-2019/codes/knuth-def.tex b/info/expose-expl3-dunkerque-2019/codes/knuth-def.tex
new file mode 100644
index 0000000000..34c771501e
--- /dev/null
+++ b/info/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