Проект Эйлера

Задача 23 «Неизбыточные суммы»

Условие:

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

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

Так как число 12 является наименьшим избыточным числом (1 + 2 + 3 + 4 + 6 = 16), наименьшее число, которое может быть записано как сумма двух избыточных чисел, равно 24. Используя математический анализ, можно показать, что все целые числа больше 28123 могут быть записаны как сумма двух избыточных чисел. Эта граница не может быть уменьшена дальнейшим анализом, даже несмотря на то, что наибольшее число, которое не может быть записано как сумма двух избыточных чисел, меньше этой границы.

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

Решение:

def compute():
 LIMIT = 28124
 divisorsum = [0] * LIMIT
 for i in range(1, LIMIT):
  for j in range(i * 2, LIMIT, i):
   divisorsum[j] += i
 abundantnums = [i for (i, x) in enumerate(divisorsum) if x > i]
 
 expressible = [False] * LIMIT
 for i in abundantnums:
  for j in abundantnums:
   if i + j < LIMIT:
    expressible[i + j] = True
   else:
    break
 
 ans = sum(i for (i, x) in enumerate(expressible) if not x)
 return str(ans)


if __name__ == "__main__":
 print(compute())
admin

Recent Posts

10 удалённых Python-вакансий

Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…

6 месяцев ago

Где искать Python-вакансии в 2026 году: зачем на Talanto.work появился отдельный сценарий поиска

Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…

6 месяцев ago

Срезы в Python со всеми подробностями

Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…

8 месяцев ago

Возведение в степень в Python: полное руководство

В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…

9 месяцев ago

Как удалить дубликаты из списка Python?

Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…

9 месяцев ago

Виртуальный (shared) хостинг от SpaceWeb: технический обзор

Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…

11 месяцев ago