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

Найти первые 5 чисел, больших 35798  , которые имеют ровно 5 делителей. Запишите в ответ найденные числа в порядке возрастания через пробел.

Обычное решение

def count_div(n): # функция для подсчёта количества делителей
    k = 2
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            k += 1
            if n // i != i:
                k += 1
        if k > 5: # для оптимизации выходим из функции если кол-во делителей больше 5
            return 0
    return k


counter = 0
for i in range(35799, 1000000000000):
    if count_div(i) == 5:
        counter += 1
        print(i, end=’ ’)
    if counter == 5:
        break

Решение на основе ОТА

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

counter = 0
for i in range(1000):
    if is_prime(i) and i ** 4 > 35798 and counter < 5:
        print(i ** 4)
        counter += 1

Ответ: 83521 130321 279841 707281 923521
Оцените статью
Я решу все!