Example #1
0
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]]])
Example #2
0
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))
Example #3
0
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())