28 lines
427 B
Awk
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
|
|
}
|