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


BYTE FUNC SumOfSquares(BYTE x)
  BYTE sum,d
 
  sum=0
  WHILE x#0
  DO
    d=x MOD 10
    d==*d
    sum==+d
    x==/10
  OD
RETURN (sum)
 
BYTE FUNC Contains(BYTE ARRAY a BYTE count,x)
  BYTE i
 
  FOR i=0 TO count-1
  DO
    IF a(i)=x THEN RETURN (1) FI
  OD
RETURN (0)
 
BYTE FUNC IsHappyNumber(BYTE x)
  BYTE ARRAY cache(100)
  BYTE count
 
  count=0
  WHILE x#1
  DO
    cache(count)=x
    count==+1
    x=SumOfSquares(x)
    IF Contains(cache,count,x) THEN
      RETURN (0)
    FI
  OD
RETURN (1)
 
PROC Main()
  BYTE x,count
 
  x=1 count=0
  WHILE count<8
  DO
    IF IsHappyNumber(x) THEN
      count==+1
      PrintF("%I: %I%E",count,x)
    FI
    x==+1
  OD
RETURN