145 是一个奇怪的数字, 因为 1! + 4! + 5! = 1 + 24 + 120 = 145.
找出所有等于各位数字阶乘之和的数字之和。
注意: 因为 1! = 1 和 2! = 2 不是和的形式,所以它们不算在内。
import math
factorial_dict = {}
for i in range(10):
factorial_dict[i] = math.factorial(i)
curious_sum = 0
# 10 ** 8 > factorial_dict[9] * 8
for i in range(3, 7 * factorial_dict[9] + 1):
i_sum = 0
j = i
while j:
i_sum += factorial_dict[j % 10]
j //= 10
if i_sum == i:
curious_sum += i
print(curious_sum)