Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
44
Task/Happy-numbers/Modula-2/happy-numbers.mod2
Normal file
44
Task/Happy-numbers/Modula-2/happy-numbers.mod2
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
MODULE HappyNumbers;
|
||||
FROM InOut IMPORT WriteCard, WriteLn;
|
||||
|
||||
CONST Amount = 8;
|
||||
VAR seen, num: CARDINAL;
|
||||
|
||||
PROCEDURE SumDigitSquares(n: CARDINAL): CARDINAL;
|
||||
VAR sum, digit: CARDINAL;
|
||||
BEGIN
|
||||
sum := 0;
|
||||
WHILE n>0 DO
|
||||
digit := n MOD 10;
|
||||
n := n DIV 10;
|
||||
sum := sum + digit * digit;
|
||||
END;
|
||||
RETURN sum;
|
||||
END SumDigitSquares;
|
||||
|
||||
PROCEDURE Happy(n: CARDINAL): BOOLEAN;
|
||||
VAR i: CARDINAL;
|
||||
seen: ARRAY [0..255] OF BOOLEAN;
|
||||
BEGIN
|
||||
FOR i := 0 TO 255 DO
|
||||
seen[i] := FALSE;
|
||||
END;
|
||||
REPEAT
|
||||
seen[n] := TRUE;
|
||||
n := SumDigitSquares(n);
|
||||
UNTIL seen[n];
|
||||
RETURN seen[1];
|
||||
END Happy;
|
||||
|
||||
BEGIN
|
||||
seen := 0;
|
||||
num := 0;
|
||||
WHILE seen < Amount DO
|
||||
IF Happy(num) THEN
|
||||
INC(seen);
|
||||
WriteCard(num,2);
|
||||
WriteLn();
|
||||
END;
|
||||
INC(num);
|
||||
END;
|
||||
END HappyNumbers.
|
||||
Loading…
Add table
Add a link
Reference in a new issue