Задача к ЕГЭ по информатике на тему «Особые числа (простые, фибоначи, факториал, палиндромы)» №4

Назовем число любопытным, если оно представимо в виде произведения 3  простых чисел, взятых в первой степени. Найти на промежутке [312311,524321]  количество любопытных чисел и наибольшее из любопытных чисел. Числа в ответе запишите через пробел.

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 three_prime_divs(n): # функция, которая проверяет можно ли получить число произведением трёх его простых делителей
    a = []
    k = 0
    for i in range(1, int(n ** 0.5) + 1):
        if n % i == 0:
            if prime(i):
                k += 1
                a.append(i)
            if n // i != i and prime(n // i):
                k += 1
                a.append(n // i)
        if k > 3:
            return False
    if k == 3 and a[0] * a[1] * a[2] == n:
        return True  # Произведение трех простых делителей в 1 степени
        # чтобы не посчитать числа, такие как 3 * 3 * 5 * 7
    return False


counter, maxim = 0, 0
for i in range(312311, 524322):
    if three_prime_divs(i):
        counter += 1
        maxim = max(maxim, i)
print(counter, maxim)

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