from projeuler.math.integer import get_factors amicable = set() for i in xrange(10000): s = sum(get_factors(i)) - i s2 = sum(get_factors(s)) - s if s2 == i and s != i: amicable.add(i) amicable.add(s) print amicable print sum(amicable)
from projeuler.math.integer import get_factors def gen_triangular_numbers(): n = 1 while True: yield n * (n + 1) / 2 n += 1 triangular_numbers = gen_triangular_numbers() n = next(triangular_numbers) while len(get_factors(n)) < 500: n = next(triangular_numbers) print n