English Français Deutsch

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