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


PROCEDURE Main()
   LOCAL i := 8, nH := 0
 
   ? hb_StrFormat( "The first %d happy numbers are:", i )
   ?
 
   WHILE i > 0
      IF IsHappy( ++nH )
	?? hb_NtoS( nH ) + " "
	--i
      ENDIF
   END
 
   RETURN
 
STATIC FUNCTION IsHappy( nNumber )
   STATIC aUnhappy := {}
   LOCAL nDigit, nSum := 0, cNumber := hb_NtoS( nNumber )
 
   FOR EACH nDigit IN cNumber
      nSum += Val( nDigit ) ^ 2
   NEXT
 
   IF nSum == 1
      aUnhappy := {}
      RETURN .T.
   ELSEIF AScan( aUnhappy, nSum ) > 0
     RETURN .F.
   ENDIF
 
   AAdd( aUnhappy, nSum )
 
   RETURN IsHappy( nSum )