Задание 25. Информатика. ЕГЭ. Шастин. 9.2.2025

Просмотры: 632
Изменено: 11 февраля 2025

(Д. Бахтиев) Пусть \(R\) — разность максимального и минимального простых делителей целого числа, не считая самого числа. Напишите программу, которая перебирает целые числа, большие \(3~333~337\) в порядке возрастания и ищет среди них такие, для которых \(R\) больше \(1000\) и кратно \(3.\) В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце — соответствующие им значения \(R.\)

Решение:

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 find_r(n):
    divisors = set()
    for x in range(2, int(n**0.5) + 1):
        if n % x == 0:
            if is_prime(x):
                divisors.add(x)
            tmp = n // x
            if is_prime(tmp):
                divisors.add(tmp)
    if divisors:
        return max(divisors) - min(divisors)
    else:
        return -1

i = 0
n = 3_333_337
while i < 5:
    n += 1
    R = find_r(n)
    if R > 1000 and R % 3 == 0:
        print(n, R)
        i += 1

Ответ:
\(3333338 \,\, 9309\)
\(3333340 \,\, 166665\)
\(3333342 \,\, 555555\)
\(3333349 \,\, 2748\)
\(3333354 \,\, 1287\)