Задание 25. Информатика. ЕГЭ. Статград. 01.04.2025-1

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

Пусть \(M\) — максимальный простой натуральный делитель целого числа, не считая самого числа. Если таких делителей у числа нет, то считаем значение \(M\) равным нулю. Напишите программу, которая перебирает целые числа, большие \(1~750~000,\) в порядке возрастания и ищет среди них такие, для которых \(M\) не больше \(15~000\) и оканчивается на \(7.\) В ответе запишите первые пять найденных чисел в порядке возрастания.

Например, для числа \(105\) \(M = 7.\)

Решение:

Python


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

def max_div(n):
    divs = {0}
    for x in range(2, int(n**0.5) + 1):
        if n % x == 0:
            if is_prime(x):
                divs.add(x)
            t = n // x
            if is_prime(t):
                divs.add(t)
    return max(divs)

i = 0
n = 1_750_000
while i < 5:
    n += 1
    md = max_div(n)
    if md <= 15_000 and md % 10 == 7:
        print(n)
        i += 1

Ответ:
\(1750001\)
\(1750006\)
\(1750023\)
\(1750041\)
\(1750044\)