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


test: proc options (main); /* 19 November 2011 */
   declare (i, j, n, m, nh initial (0) ) fixed binary (31);
 
main_loop:
   do j = 1 to 100;
      n = j;
      do i = 1 to 100;
         m = 0;
         /* Form the sum of squares of the digits. */
         do until (n = 0);
            m = m + mod(n, 10)**2;
            n = n/10;
         end;
         if m = 1 then
            do;
               put skip list (j || ' is a happy number');
               nh = nh + 1;
               if nh = 8 then return;
               iterate main_loop;
            end;
         n = m; /* Replace n with the new number formed from digits. */
      end;
   end;
end test;
 