34 lines
592 B
Text
34 lines
592 B
Text
proc nonrec dsumsq(byte n) byte:
|
|
byte r, d;
|
|
r := 0;
|
|
while n~=0 do
|
|
d := n % 10;
|
|
n := n / 10;
|
|
r := r + d * d
|
|
od;
|
|
r
|
|
corp
|
|
|
|
proc nonrec happy(byte n) bool:
|
|
[256] bool seen;
|
|
byte i;
|
|
for i from 0 upto 255 do seen[i] := false od;
|
|
while not seen[n] do
|
|
seen[n] := true;
|
|
n := dsumsq(n)
|
|
od;
|
|
seen[1]
|
|
corp
|
|
|
|
proc nonrec main() void:
|
|
byte n, seen;
|
|
n := 1;
|
|
seen := 0;
|
|
while seen < 8 do
|
|
if happy(n) then
|
|
writeln(n:3);
|
|
seen := seen + 1
|
|
fi;
|
|
n := n + 1
|
|
od
|
|
corp
|