Задача к ЕГЭ по информатике на тему «делители числа» №2

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [316312; 451234], числа, у которых произведение нетривиальных делителей кратно 14. В ответ укажите количество таких чисел и через пробел сумму цифр максимального произведения нетривиальных делителей подходящего числа.

import math
def divs(x): # функция, которая возвращает отсортированный список делителей числа
    d = set() # Множество для хранения делителей
    for i in range(2,int(x**0.5)+1):
        if x % i == 0:
            # Добавляем делитель и парный ему в множество
            d |= {i,x//i}
    return sorted(d) # Возвращаем отсортированный список делителей числа x
ans = []
for x in range(316312, 451235):
    m = divs(x)
    if len(m) > 0:
        d = math.prod(m)  # воспользуемся модулем math и функцией prod,
        # которая вычисляет произведение всех элементов списка
        if d % 14 == 0:
            ans += [d]
print(len(ans),sum(map(int,str(max(ans))))) # вывод количества чисел и суммы цифр максимального произведения

Ответ: 9638 1953
Оцените статью
Я решу все!