№25 · решено
M простое, ≥ 4 единиц
M — разность наибольшего и наименьшего простых делителей числа (не считая самого числа; если их нет, M = 0). Числа > 8 117 600 756, у которых M простое и в записи M не менее четырёх единиц. Первые 5 и M.
Источник: ФИПИ, № 31161
Ответвпиши то, что вывела программа
Показать разбор
- Напиши razl(x): находит первый делитель и рекурсивно раскладывает остаток. Для простого числа вернётся список из одного элемента.
- Перебирай числа по возрастанию, начиная со следующего за данным в условии. Простые пропускай, у них M = 0.
- Посчитай M как разность наибольшего и наименьшего простых делителей.
- Проверь, что в записи M не меньше четырёх единиц и что M простое. Сначала цифры: это быстрее.
- Выводи 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