Задание 25. Информатика. ЕГЭ. Поляков-2575

Просмотры: 155
Изменено: 23 ноября 2024

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку \([244143; \, 1367821]\), числа, имеющие ровно \(5\) различных делителей. В ответе для каждого найденного числа запишите два его наибольших делителя, не равных самому числу, в порядке возрастания.

Решение:

Python


import math

def is_prime(n):
    if n == 1:
        return False
    if n in (2, 3):
        return True
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True

d = math.ceil(244143**0.25)

while 244143 <= d ** 4 <= 1367821:
    if is_prime(d):
        print(d**2, d**3)
    d += 1

Ответ:
529   12167
841   24389
961   29791