`' 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.

function happy(x)

set y = x

set lasty = 0

set found = "_"

while y != 1 and not (found regex "_".y."_")

set found = found . y . "_"

set m = 0

while y > 0

set digit = y mod 10

set m = m + digit * digit

set y = (y - digit) / 10

end while

set y = format(m,"%1d")

end while

set found = found . y . "_"

if y = 1

set result = 1

else

set result = 0

end if

end function

set c = 0

set i = 1

while c < 8 and i < 100

if happy(i)

echo i

set c = c + 1

end if

set i = i + 1

end while

Those numbers for which this process end in 1 are happy numbers,

while those numbers that do not end in 1 are unhappy numbers.

1

7

10

13

19

23

28

31