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


include "cowgol.coh";
 
sub sumDigitSquare(n: uint8): (s: uint8) is
    s := 0;
    while n != 0 loop
        var d := n % 10;
        s := s + d * d;
        n := n / 10;
    end loop;
end sub;
 
sub isHappy(n: uint8): (h: uint8) is
    var seen: uint8[256];
    MemZero(&seen[0], @bytesof seen);
 
    while seen[n] == 0 loop
        seen[n] := 1;
        n := sumDigitSquare(n);
    end loop;
 
    if n == 1 then
        h := 1;
    else
        h := 0;
    end if;
end sub;
 
var n: uint8 := 1;
var seen: uint8 := 0;
 
while seen < 8 loop
    if isHappy(n) != 0 then
        print_i8(n);
        print_nl();
        seen := seen + 1;
    end if;
    n := n + 1;
end loop;