from lib_misc import factorial def is_curious(n): s = sum([factorial(int(d)) for d in str(n)]) return n == s def is_curious_faster(n): """ Potentially faster solution. """ s = 0 for d in str(n): s += factorial(int(d)) if s > n: return False return n == s def euler_034(): return sum([n for n in range(3, 10**5) if is_curious(n)]) if __name__ == "__main__": assert(is_curious(145)) print("e034.py: {}".format(euler_034())) assert(euler_034() == 40730)