From Wikipedia, the free encyclopedia:

 A happy number is defined by the following process:
 Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals   1   (where it will stay),   or it loops endlessly in a cycle which does not include   1.   


 Those numbers for which this process end in   1   are       happy   numbers,   
 while   those numbers   that   do   not   end in   1   are   unhappy   numbers. 


Task

Find and print the first   8   happy numbers.

Display an example of your output here on this page.



See also

   The OEIS entry:   The     happy numbers:   A007770
   The OEIS entry:   The unhappy numbers;   A031177


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