Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,75 @@
|
|||
MODULE SternBrocot;
|
||||
FROM InOut IMPORT WriteString, WriteCard, WriteLn;
|
||||
|
||||
CONST Amount = 1200;
|
||||
|
||||
VAR stern: ARRAY [1..Amount] OF CARDINAL;
|
||||
i: CARDINAL;
|
||||
|
||||
PROCEDURE GCD(a,b: CARDINAL): CARDINAL;
|
||||
VAR c: CARDINAL;
|
||||
BEGIN
|
||||
WHILE b # 0 DO
|
||||
c := a MOD b;
|
||||
a := b;
|
||||
b := c;
|
||||
END;
|
||||
RETURN a;
|
||||
END GCD;
|
||||
|
||||
PROCEDURE Generate;
|
||||
VAR i: CARDINAL;
|
||||
BEGIN
|
||||
stern[1] := 1;
|
||||
stern[2] := 1;
|
||||
FOR i := 2 TO Amount DIV 2 DO
|
||||
stern[i*2 - 1] := stern[i] + stern[i-1];
|
||||
stern[i*2] := stern[i];
|
||||
END;
|
||||
END Generate;
|
||||
|
||||
PROCEDURE FindFirst(n: CARDINAL): CARDINAL;
|
||||
VAR i: CARDINAL;
|
||||
BEGIN
|
||||
FOR i := 1 TO Amount DO
|
||||
IF stern[i] = n THEN
|
||||
RETURN i;
|
||||
END;
|
||||
END;
|
||||
END FindFirst;
|
||||
|
||||
PROCEDURE ShowFirst(n: CARDINAL);
|
||||
BEGIN
|
||||
WriteString("First");
|
||||
WriteCard(n,4);
|
||||
WriteString(" at ");
|
||||
WriteCard(FindFirst(n), 4);
|
||||
WriteLn;
|
||||
END ShowFirst;
|
||||
|
||||
BEGIN
|
||||
Generate;
|
||||
|
||||
WriteString("First 15 numbers:");
|
||||
FOR i := 1 TO 15 DO
|
||||
WriteCard(stern[i], 2);
|
||||
END;
|
||||
WriteLn;
|
||||
|
||||
FOR i := 1 TO 10 DO
|
||||
ShowFirst(i);
|
||||
END;
|
||||
ShowFirst(100);
|
||||
WriteLn;
|
||||
|
||||
FOR i := 2 TO Amount DO
|
||||
IF GCD(stern[i-1], stern[i]) # 1 THEN
|
||||
WriteString("GCD of adjacent elements not 1 at: ");
|
||||
WriteCard(i-1, 4);
|
||||
WriteLn;
|
||||
HALT;
|
||||
END;
|
||||
END;
|
||||
WriteString("The GCD of every pair of adjacent elements is 1.");
|
||||
WriteLn;
|
||||
END SternBrocot.
|
||||
Loading…
Add table
Add a link
Reference in a new issue