Сверь числа и знаки с фото.
Напишите функцию, которая возвращает список делителей числа, перебирая кандидатов до половины числа. С её помощью выведите через пробел количество делителей числа 360 и их сумму. В ответе запишите выведенные числа через пробел.
Ответ: 24 1170
def divisors(n):
result = []
for d in range(1, n // 2 + 1):
if n % d == 0:
result.append(d)
result.append(n) # само число тоже является делителем
return result
divs = divisors(360)
print(len(divs), sum(divs))
Вывод:
24 1170
Как это работает:
n % d == 0означает, что \(d\) делит \(n\) без остатка.- Собственные делители не могут быть больше половины числа, поэтому цикл идёт до \(n // 2\). Но само число \(n\) тоже нужно добавить в список — иначе потеряется делитель \(360\).
- Проверка через разложение: \[ 360=2^3\cdot 3^2\cdot 5. \]
Количество делителей: \[ (3+1)(2+1)(1+1)=4\cdot3\cdot2=24. \]
Сумма делителей: \[ (1+2+4+8)(1+3+9)(1+5)=15\cdot13\cdot6=1170. \]
Без result.append(n) функция вернула бы только собственные делители, то есть неполный список.