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

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