def sum_of_divisors(n, sum_of_divisors_cache): if n in sum_of_divisors_cache: return sum_of_divisors_cache[n] else: sum_of_divisors = sum(all_proper_divisors(n)) sum_of_divisors_cache[n] = sum_of_divisors return sum_of_divisors
def _abundant_numbers(less_than): result = set() for n in range(1, less_than): if n < sum(all_proper_divisors(n)): result |= {n} return result