RosettaCodeData/Task/Zeckendorf-number-representation/Modula-2/zeckendorf-number-representation.mod2
2026-04-30 12:34:36 -04:00

44 lines
740 B
Text

MODULE Zeckendorf;
FROM InOut IMPORT Write, WriteString, WriteCard, WriteLn;
VAR n: CARDINAL;
PROCEDURE Zeck(n: CARDINAL);
VAR
fib: ARRAY [1..50] OF CARDINAL;
i: CARDINAL;
BEGIN
IF n=0 THEN
Write('0');
RETURN
END;
fib[1] := 1;
fib[2] := 2;
i := 2;
WHILE fib[i] < n DO
fib[i+1] := fib[i] + fib[i-1];
INC(i)
END;
WHILE fib[i] > n DO DEC(i) END;
WHILE i > 0 DO
IF fib[i] > n THEN
Write('0')
ELSE
Write('1');
DEC(n, fib[i])
END;
DEC(i)
END
END Zeck;
BEGIN
FOR n := 0 TO 20 DO
WriteCard(n, 2);
WriteString(": ");
Zeck(n);
WriteLn;
END
END Zeckendorf.