28 lines
710 B
Awk
28 lines
710 B
Awk
# Usage: GAWK -f ITERATED_DIGITS_SQUARING.AWK
|
|
BEGIN {
|
|
# Setup buffer for results up to 9*9*8
|
|
for (i = 1; i <= 648; i++) {
|
|
k = i
|
|
do {
|
|
k = squaredigitsum(k)
|
|
} while ((k != 1) && (k != 89))
|
|
if (k == 1) # This will give us 90 entries
|
|
buffer[i] = ""
|
|
}
|
|
# Check sequence for every number
|
|
pow10 = 1
|
|
for (i = 1; i <= 100000000; i++) {
|
|
count += (squaredigitsum(i) in buffer) ? 0 : 1
|
|
if (i == pow10) {
|
|
printf("1->10^%d: %d\n", length(i) - 1, count)
|
|
pow10 *= 10
|
|
}
|
|
}
|
|
}
|
|
function squaredigitsum(n, r) {
|
|
while (n) {
|
|
r += (n % 10) ^ 2
|
|
n = int(n / 10)
|
|
}
|
|
return r
|
|
}
|