Задание 25. Информатика. ЕГЭ. Досрочный экзамен. 08.04.2025

Просмотры: 1264
Изменено: 8 апреля 2025

Напишите программу, которая перебирает целые числа, бóльшие \(1~125~000,\) в порядке возрастания и ищет среди них такие, у которых есть натуральный делитель, оканчивающийся на цифру \(7\) и не равный ни самому числу, ни числу \(7.\) В ответе запишите в первой строке таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце – наименьший делитель для каждого из них, оканчивающийся цифрой \(7,\) не равный ни самому числу, ни числу \(7.\) Количество строк в таблице для ответа избыточно.

Решение:

Python


def divisors(n):
    div7 = set()
    for x in range(2, int(n**0.5) + 1):
        if n % x == 0:
            d = n // x
            if x != 7 and x % 10 == 7:
                div7.add(x)
            if d != 7 and d % 10 == 7:
                div7.add(d)
    if len(div7):
        return min(div7)
    return 0

i = 0
n = 1_125_000
while i < 5:
    n += 1
    d = divisors(n)
    if d:
        print(n, d)
        i += 1

Ответ:
\(1125003 \,\, 467\)
\(1125006 \,\, 97\)
\(1125009 \,\, 17\)
\(1125011 \,\, 3187\)
\(1125012 \,\, 177\)