def fac(limit): result = 1 for i in range(1, limit+1): result *= i return result facs = [ fac(i) for i in range(0, 10) ] def facsum(number): global facs sum = 0 while number > 0: digit = number % 10 sum += facs[digit] number = number / 10 return sum sum = 0 for i in xrange(10, 2540160): if facsum(i) == i: sum += i print sum