кодесурса
«Python

Вызовы Python: найдите сумму всех натуральных чисел, которую нельзя записать как сумму двух чисел

script1adsense2code
script1adsense3code

Задачи Python - 1: Упражнение 47 с решением

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

Из Википедии - Дружные числа - это два разных числа, связанных так, что сумма правильных делителей каждого равна другому числу. (Правильный делитель числа является положительным фактором этого числа, кроме самого числа. Например, правильные делители числа 6 равны 1, 2 и 3.)
Наименьшая пара дружных чисел - (220, 284). Они дружны, потому что правильными делителями 220 являются 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 и 110, из которых сумма равна 284; и правильными делителями 284 являются 1, 2, 4, 71 и 142, из которых сумма равна 220.

Пример решения :

Код Python:

from functools import reduce
from itertools import combinations_with_replacement as combinations
MAX_NUM = 28123
def divisors(x):
    return set(reduce(list.__add__, [[div, x//div] for div in range(2, int(x**0.5) + 1) if x % div == 0] + [[1]]))
def abundant(nums):
    return sum(divisors(nums)) > nums
abundant_nums = (n for n in range(1, MAX_NUM) if abundant(n))
sum_of_two_abundants = set(a + b for a, b in combinations(abundant_nums, 2))
not_abundant_nums = (x for x in range(MAX_NUM) if x not in sum_of_two_abundants)
print(sum(not_abundant_nums))

Пример вывода:

 4179871

Блок - схема:

«Python

Редактор кода Python:

Внесите свой код и комментарии через Disqus.

Предыдущий: Напишите программу на Python для вычисления суммы всех дружных чисел под заданным числом.
Далее: Напишите программу на Python, чтобы найти миллионную лексикографическую перестановку цифр 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code