Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [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