Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3790664
А
Аноним
15 часов назад · публичный вопрос
А
Аноним

Напишите функцию, которая возвращает список делителей числа, перебирая кандидатов до половины числа. С её помощью выведите через пробел количество делителей числа 360 и их сумму.

Запрос пользователя

Реши задание на изображении

Ответ нейросети
15 часов назад

Ответ: 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

Как это работает:

  1. n % d == 0 означает, что \(d\) делит \(n\) без остатка.
  2. Собственные делители не могут быть больше половины числа, поэтому цикл идёт до \(n // 2\). Но само число \(n\) тоже нужно добавить в список — иначе потеряется делитель \(360\).
  3. Проверка через разложение: \[ 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) функция вернула бы только собственные делители, то есть неполный список.