def compute(): limit = 10**4 div_sums = sum_divisors_sieve(limit - 1, True) return sum([n for n in range(limit) if div_sums[n] < limit and div_sums[n] != n and n == div_sums[div_sums[n]]])
def compute(): limit = 28123 div_sums = sum_divisors_sieve(limit, True) abundant_numbers = [n for n in range(1, limit + 1) if div_sums[n] > n] return sum_integers(limit) - sum(set(i + j for i in abundant_numbers for j in abundant_numbers if i + j <= limit))
from euler import sum_divisors_sieve limit = 10 ** 6 visited = [0] * (limit + 1) divisors = sum_divisors_sieve(limit, True) def compute(): longest_chain, min_longest_chain = 0, 0 for start in range(1, limit): if not visited[start]: visited[start] = True chain = [start] next_item = divisors[start] while next_item not in chain and next_item <= limit: chain.append(next_item) visited[next_item] = 1 next_item = divisors[next_item] if next_item <= limit: chain_length = len(chain) - chain.index(next_item) if chain_length > longest_chain: longest_chain = chain_length min_longest_chain = min(chain[chain.index(next_item) :]) return min_longest_chain if __name__ == "__main__": print(compute())