Все задачи №25
№25

M простое, ≥ 4 единиц

M — разность наибольшего и наименьшего простых делителей числа (не считая самого числа; если их нет, M = 0). Числа > 8 117 600 756, у которых M простое и в записи M не менее четырёх единиц. Первые 5 и M.

Источник: ФИПИ, № 31161

Ответвпиши то, что вывела программа
Показать разбор
  1. Напиши razl(x): находит первый делитель и рекурсивно раскладывает остаток. Для простого числа вернётся список из одного элемента.
  2. Перебирай числа по возрастанию, начиная со следующего за данным в условии. Простые пропускай, у них M = 0.
  3. Посчитай M как разность наибольшего и наименьшего простых делителей.
  4. Проверь, что в записи M не меньше четырёх единиц и что M простое. Сначала цифры: это быстрее.
  5. Выводи x и M, после пятого найденного останавливайся.
def p(x):
    return x > 1 and all(x % d != 0 for d in range(2, int(x ** 0.5) + 1))

def razl(x):
    for i in range(2, int(x ** 0.5) + 1):
        if x % i == 0:
            return [i] + razl(x // i)
    return [x]

n = 0
for x in range(8117600757, 10 ** 20):
    r = razl(x)
    if len(r) == 1:
        continue
    s = set(r)
    m = max(s) - min(s)
    if str(m).count('1') >= 4 and p(m):
        print(x, m)
        n += 1
        if n == 5:
            break