Задание 25. Информатика. Демо 2021

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505], числа, имеющие ровно два различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в таблицу на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке таблицы также должны следовать в порядке возрастания.

Решение:

Python


def search_div(n):
    divisors = set()
    for i in range(2, int(n**0.5)+1):
        if not n % i:
            divisors.add(i)
            divisors.add(n//i)
        if len(divisors) > 2:
            break
    return divisors

for i in range(174457, 174506):
    d = [*search_div(i)]
    if len(d) == 2:
        d.sort()
        print(*d)

Ответ:
3   58153
7   24923
59   2957
13   13421
149   1171
5   34897
211   827
2   87251