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

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [300000; 333000], числа, имеющие ровно 3 различных натуральных делителя. Запишите такие числа через пробел, в порядке возрастания.

def divs(n): # функция возращающая список делителей числа
    d = set()
    for j in range(1, int(n ** 0.5) + 1):
        if n % j == 0:
            d.add(j)
            d.add(n//j)
        if len(d) > 3: # для оптимизации выходим из функции если кол-во делителей больше 3
            return d
    return sorted(d)


for i in range(300000, 333000 + 1):
    if len(divs(i)) == 3:
        print(i)

Ответ: 310249 316969 323761 326041 332929
Оцените статью
Я решу все!