Вызовы Python: вычислить сумму всех дружных чисел под заданным числом
Задачи Python - 1: Упражнение 46 с решением
Напишите программу на 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:
def amicable_sum(num):
divisor_sum = [0] * num
for i in range(1, len(divisor_sum)):
for j in range(i * 2, len(divisor_sum), i):
divisor_sum[j] += i
# Find all amicable pairs
result = 0
for i in range(1, len(divisor_sum)):
j = divisor_sum[i]
if j != i and j < len(divisor_sum) and divisor_sum[j] == i:
result += i
return str(result)
print(amicable_sum(500))
print(amicable_sum(10000))
Пример вывода:
504 31626
Блок - схема:
Редактор кода Python:
Внесите свой код и комментарии через Disqus.
Предыдущий: Напишите программу на Python, чтобы найти сумму цифр данного числа.
Далее: Напишите программу на Python, чтобы найти сумму всех натуральных чисел, которая не может быть записана как сумма двух чисел.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования