RosettaCodeData/Task/Happy-numbers/AWK/happy-numbers-2.awk
2023-07-01 13:44:08 -04:00

28 lines
427 B
Awk

BEGIN {
for (i = 1; i < 50; ++i){
if (isHappy(i)) {
print i;
}
}
exit
}
function isHappy(n, seen) {
delete seen;
while (1) {
n = sumSqrDig(n)
if (seen[n]) {
return n == 1
}
seen[n] = 1
}
}
function sumSqrDig(n, d, tot) {
while (n) {
d = n % 10
tot += d * d
n = int(n/10)
}
return tot
}