Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [412412; 535242] числа, у которых сумма нетривиальных делителей кратна 184 и сумма цифр суммы нетривиальных делителей является простым числом. В ответ укажите количество таких чисел и через пробел минимальное число, большее 500000.
def simple(x): # функция проверки, что число - простое
return x > 1 and all(x % y for y in range(2,int(x**0.5)+1))
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(412412,535242):
d = sum(divs(x))
# проверка, что сумма нетривиальных делителей кратна 184, а также, что сумма цифр суммы делителей является простым числом
if d % 184 == 0 and simple(sum(map(int,str(d)))):
ans += [x]
print(len(ans),min(x for x in ans if x > 500000)) # вывод количества чисел и минимального числа, большего 500000
Ответ: 133 500191