Euler_92.py (479B)
1 import sys 2 3 squares = [i * i for i in range(10)] 4 cache = [0] * 10000000 5 count = 0 6 7 def sum_digit_squares(n): 8 s = 0 9 while n: 10 s += squares[n % 10] 11 n //= 10 12 return s 13 14 for n in range (1, 10000000): 15 m = n 16 17 while True: 18 m = sum_digit_squares(m) 19 20 if m == 1 or cache[m] == 1: 21 cache[n] = 1 22 break 23 if m == 89 or cache[m] == 89: 24 cache[n] = 89 25 count += 1 26 break 27 print count