Информатика: ОГЭ и ЕГЭ

Тренировка ЕГЭ · задание 25 · простые делители: условие на M

Задание 25 ЕГЭ: простые делители: условие на M

Наименьший и наибольший простые делители: условие на M. Тема номера — делители и маски чисел. Ниже — пример с ответом и решением; кнопкой под ним можно решить такую же задачу с другими числами, ответ проверится сразу.

Пример

Пусть M — разность наибольшего и наименьшего простых делителей числа, не считая самого числа. Если у числа нет таких делителей (число простое), считаем значение M неопределённым.

Найдите пять наименьших натуральных чисел, больших 730 174, для которых M определено и является простым числом. В ответе запишите найденные числа в порядке возрастания, справа от каждого — соответствующее значение M.

Ответ730230 239; 730236 149; 730276 2309; 730292 71; 730298 11777

Решение

Раскладываем число на простые множители делением: первый найденный простой делитель — наименьший, последний (или остаток после деления, если он больше 1) — наибольший. Простые числа пропускаем: у них нет простых делителей, кроме самих себя.

Ответ:
730230 239
730236 149
730276 2309
730292 71
730298 11777

def prime_ends(n):
    small = big = None
    m, d = n, 2
    while d * d <= m:
        if m % d == 0:
            small = small or d
            big = d
            while m % d == 0:
                m //= d
        d += 1
    if m > 1 and m != n:
        big = m
        small = small or m
    return small, big

n, found = 730174, 0
while found < 5:
    n += 1
    small, big = prime_ends(n)
    if small is None:
        continue
    M = big - small
    if M > 1 and all(M % d for d in range(2, int(M ** 0.5) + 1)):
        print(n, M)
        found += 1

Решить такую задачу — новый вариант с проверкой

Задание 25 ЕГЭ: другие виды

Все задачи задания 25 вперемешку · разбор: как решать задание 25 · пробные варианты ЕГЭ