A large commit.
[pdp8.git] / sw / src / pascal / EEXAKT.PS
CommitLineData
81e70d48
PH
1PROGRAM EEEEEEEEEEEEEE(INPUT,OUTPUT);
2
3 CONST BASE=1000000;
4
5 VAR N,I,FIRST,LAST,NUMBEROFDIGITS,
6 CARRY,DIGIT,POWER: INTEGER;
7 A,S: ARRAY[1..501] OF INTEGER;
8
9BEGIN READ(NUMBEROFDIGITS);
10 FIRST := 1; LAST := NUMBEROFDIGITS DIV 6 + 1;
11 N := 2;
12 A[1] := 500000; S[1] := 500000;
13 FOR I := 2 TO LAST DO
14 BEGIN A[I] := 0; S[I] := 0 END;
15
16 REPEAT N := N + 1;
17 CARRY := 0;
18 FOR I := FIRST TO LAST DO
19 BEGIN
20 DIGIT := CARRY*BASE + A[I];
21 A[I] := DIGIT DIV N;
22 CARRY := DIGIT MOD N
23 END;
24 IF A[FIRST] = 0 THEN FIRST := FIRST + 1;
25
26 CARRY := 0;
27 I := LAST;
28 WHILE (FIRST<=I) OR (CARRY<>0) DO
29 BEGIN
30 DIGIT := S[I] + A[I] + CARRY; CARRY := 0;
31 IF DIGIT >= BASE THEN BEGIN
32 DIGIT := DIGIT - BASE;
33 CARRY := 1
34 END;
35 S[I] := DIGIT;
36 I := I - 1
37 END
38 UNTIL FIRST>LAST;
39
40 WRITE("E = 2.");
41 FOR I := 1 TO LAST DO
42 BEGIN
43 DIGIT := S[I]; POWER := BASE;
44 REPEAT POWER := POWER DIV 10;
45 WRITE(DIGIT DIV POWER :1);
46 DIGIT := DIGIT MOD POWER
47 UNTIL POWER=1;
48 IF I MOD 12 = 0 THEN BEGIN WRITELN; WRITE(" ":6) END
49 END;
50 WRITELN
51END.