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

Пусть M(N) – произведение 5 наименьших различных натуральных делителей натурального числа N, не считая единицы. Если у числа N меньше 5 таких делителей, то M(N) считается равным нулю.

Найдите 5 наименьших натуральных чисел, превышающих 500 000 000, для которых 0 < M (N) < N  .

В ответе запишите найденные значения M(N) в порядке возрастания соответствующих им чисел N.

counter = 0
x = 500000001
while counter < 5: # пока кол-во подходящих чисел меньше 5
    d = set() # множество делителей числа
    for i in range(2, int(x ** 0.5) + 1):
        if x % i == 0:
            d |= {i, x // i}
    if len(d) >= 5: # если кол-во делителей больше и равно 5
        d = sorted(d)[:5] # берем 5 наименьших делителей
        p = 1 # произведение делителей
        for i in d: # проход по делителям
            p *= i
        if 0 < p < x:
            print(p) # вывод произведения
            counter += 1 # увеличение подходящих чисел
    x += 1 # увеличение текущего числа

Ответ: 1008 1797092 48408867 1800 1156923
Оцените статью
Я решу все!