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

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

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

Ответ: 2
Оцените статью
Я решу все!