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

Найти на промежутке [12524,15421]  числа, у которых все нетривиальные делители — простые или отсутствуют. В ответе через пробел запишите количество подходящих чисел и максимальное из них через пробел.

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

 

 
def okay(n):  # Все ли нетривиальные делители числа простые?
 
    for i in range(2, int(n ** 0.5) + 1):
 
        if n % i == 0:
 
            if not prime(i):  # Если встретили непростой делитель,
 
                return False  # то число не подходит
 
            if n // i != i:
 
                if not prime(n // i):
 
                    return False
 
    return True
 

 

 
counter, maxim = 0, 0
 
for i in range(12524, 15422):
 
    if okay(i):
 
        counter += 1
 
        if i > maxim:
 
            maxim = i
 
print(counter, maxim)

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