RosettaCodeData/Task/Iterated-digits-squaring/Oberon/iterated-digits-squaring.oberon
2023-07-01 13:44:08 -04:00

32 lines
527 B
Text

MODULE DigitsSquaring;
IMPORT
Out;
VAR
i,hits89: LONGINT;
PROCEDURE Squaring(n: LONGINT): LONGINT;
VAR
d, sum: LONGINT;
BEGIN
LOOP
sum := 0;
WHILE n > 0 DO
d := n MOD 10;
INC(sum,d * d);
n := n DIV 10
END;
IF (sum = 1) OR (sum = 89) THEN EXIT END;
n := sum;
END;
RETURN sum
END Squaring;
BEGIN
hits89 := 0;
FOR i := 1 TO 100000000 DO
IF Squaring(i) = 89 THEN INC(hits89) END
END;
Out.LongInt(hits89,0);Out.Ln
END DigitsSquaring.