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

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

def prime(n): # функция, которая проверяет, что число - простое
    if n > 1:
        for i in range(2, int(n**0.5) + 1):
            if n % i == 0:
                return False
        return True
    return False

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)
    return sorted(d)
count = 0
for x in range(52112,623123):
    d = [i for i in divs(x) if prime(i)] # список, в котором хранятся только простые делители числа
    if len(d) == 3:
        count += 1
print(count)

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