Дружественные числа – это два натуральных числа, таких, что сумма всех делителей одного числа (меньших самого этого числа) равна другому числу, и наоборот. Найдите все пары дружественных чисел, каждое из которых меньше 10000. Используйте функцию, которая вычисляет сумму делителей числа.
Для начала напишем функцию, которая будет вычислять сумму всех делителей числа:
def sum_of_divisors(n): divisors = [] for i in range(1, n): if n % i == 0: divisors.append(i) return sum(divisors)
Теперь найдем все пары дружественных чисел, каждое из которых меньше 10000:
friendly_numbers = [] for i in range(1, 10000): sum1 = sum_of_divisors(i) if sum1 < 10000: sum2 = sum_of_divisors(sum1) if sum2 == i and sum1 != i: friendly_numbers.append((i, sum1)) print(friendly_numbers)
Для начала напишем функцию, которая будет вычислять сумму всех делителей числа:
def sum_of_divisors(n):divisors = []
for i in range(1, n):
if n % i == 0:
divisors.append(i)
return sum(divisors)
Теперь найдем все пары дружественных чисел, каждое из которых меньше 10000:
friendly_numbers = []for i in range(1, 10000):
sum1 = sum_of_divisors(i)
if sum1 < 10000:
sum2 = sum_of_divisors(sum1)
if sum2 == i and sum1 != i:
friendly_numbers.append((i, sum1))
print(friendly_numbers)
Результат:
[(220, 284), (284, 220), (1184, 1210), (1210, 1184), (2620, 2924), (2924, 2620), (5020, 5564), (5564, 5020), (6232, 6368), (6368, 6232)]