# Happy Numbers

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

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.
1

7

10

13

19

23

28

31