--- /dev/null
+PROGRAM FAKTORIELLE(OUTPUT);
+CONST NMAX=65;
+ ZMAX=50;
+VAR A: ARRAY[0..NMAX] OF INTEGER;
+ U,J,K,I: INTEGER;
+ C: INTEGER;
+BEGIN
+ FOR I:=0 TO NMAX DO A[I]:=0;
+ A[NMAX]:=1;
+ FOR J:=1 TO ZMAX DO
+ BEGIN
+ U:=0;
+ FOR I:=NMAX DOWNTO 0 DO
+ BEGIN
+ C:=A[I]*J;
+ A[I]:=(C+U) MOD 10;
+ U:=(C+U) DIV 10;
+ END;
+ WRITELN;
+ WRITE(J:3," FAK = ");
+ K:=0;
+ WHILE A[K]=0 DO
+ BEGIN
+ K:=K+1;
+ WRITE(" ")
+ END;
+ FOR K:=K TO NMAX DO WRITE(A[K]:1);
+ END
+END.