Почему эта программа Sage не работает должным образом (Project Euler 23)?

Это моё решение проблемы 23 Project Euler, которая:

"Совершенное число - это число, для которого сумма его собственных делителей в точности равна числу. Например, сумма правильных делителей 28 будет равна 1 + 2 + 4 + 7 + 14 = 28, что означает, что 28 - идеальное число

Число n называется дефицитным, если сумма его собственных делителей меньше n, и оно называется избыточным, если эта сумма превышает n.

Поскольку 12 - это наименьшее число с обилием, 1 + 2 + 3 + 4 + 6 = 16, наименьшее число, которое может быть записано как сумма двух чисел с обилием, равно 24. С помощью математического анализа можно показать, что все целые числа больше 28123 можно записать как сумму двух обильных чисел. Однако этот верхний предел не может быть уменьшен в дальнейшем анализом, хотя известно, что наибольшее число, которое не может быть выражено как сумма двух чисел, меньше этого предела.

Найдите сумму всех натуральных чисел, которая не может быть записана как сумма двух чисел ".

Я написал этот код, но по какой-то причине он дает мне 4190404 что, согласно веб-сайту Project Euler, неверно.

import numpy

def lowfactor(n):
    factors = [i for i in xrange(2, ceil(sqrt(n))) if n % i == 0]

    return list(numpy.unique(factors))

def factor(n):
    low = lowfactor(n)
    factors = [n / i for i in low]
    factors.reverse()
    factors = factors + low

    return factors

def isAbundant(n):
    factors = factor(n)
    factorSum = sum(factors)

    return factorSum > n

abundants = [i for i in xrange(28124) if isAbundant(i)]

sums = map(lambda n: False, range(28124))

for a in xrange(0, len(abundants)):
    for b in xrange(a, len(abundants)):
        if (abundants[a] + abundants[b]) < 28124:
            sums[abundants[a] + abundants[b]] = True

notsums = []
for i in xrange(28124):
    if not sums[i]:
        notsums.append(i)

sumofnotsums = sum(notsums)

print(sumofnotsums)

1 ответ

Решение

Вы увидите проблему, если вычислите коэффициент (28) и сравните свой результат с ответом, данным Эйлером.

Другие вопросы по тегам