def solve(n=100): d = Div(1, 0) for k in gen_e_divisors(n): apply(d, k) return sum(gen_numbers(d.num))
def solve_3(n=100): return sum(gen_numbers(reduce(lambda x,y: (x[1]+y*x[0],x[0]), gen_e_divisors(n), (1,0))[0]))
def solve_2(n=100): return sum(gen_numbers(reduce(apply, gen_e_divisors(n), Div(1, 0)).num))
def solve_2(n=1000): return reduce(operator.add, gen_numbers(2**n))