Задание 25. Информатика. ЕГЭ. Поляков-2589
- Просмотры: 137
- Изменено: 24 ноября 2024
(Д.Ф. Муфаззалов) Два числа называются дружественными если сумма собственных делителей (то есть всех положительных делителей, отличных от самого́ числа) любого их них равна другому числу. Например, числа \(220\) и \(284\) дружественные. Выведите в порядке возрастания числа в диапазоне \( [2; \,\, 30000]\), имеющие дружественное число, большее чем само это число, и через пробел это дружественное число. Каждое следующие число из указанного диапазона выводите на новой строке.
Решение:
Python
def divisors(n):
d = set()
d.add(1)
for x in range(2, int(n**0.5)+1):
if n % x == 0:
d.add(x)
d.add(n // x)
return d
for x in range(2, 30001):
sum_div = sum(divisors(x))
if sum_div > x and x == sum(divisors(sum_div)):
print(x, sum_div)
Ответ:
\( 220 \,\, 284\)
\( 1184 \,\, 1210\)
\( 2620 \,\, 2924\)
\( 5020 \,\, 5564\)
\( 6232 \,\, 6368\)
\( 10744 \,\, 10856\)
\( 12285 \,\, 14595\)
\( 17296 \,\, 18416\)