№25 · решено
M > 80 000, простое, «567» ровно раз
M — сумма наименьшего и наибольшего простых делителей числа (не считая его самого; нет делителей — 0). Числа > 8 007 494 154, у которых M > 80 000, M простое и в записи M цифры 567 встречаются ровно один раз. Первые 5 и M.
Источник: ФИПИ, № 31134
Ответвпиши то, что вывела программа
Показать разбор
- Напиши razl(x): находит первый делитель и рекурсивно раскладывает остаток. Для простого числа вернётся список из одного элемента.
- Перебирай числа по возрастанию, начиная со следующего за данным в условии. Простые пропускай, у них M = 0.
- Посчитай M как сумму наибольшего и наименьшего простых делителей.
- Проверь, что M больше 80 000, что 567 встречается в записи 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(8007494155, 10 ** 20):
r = razl(x)
if len(r) == 1:
continue
s = set(r)
m = max(s) + min(s)
if m > 80000 and str(m).count('567') == 1 and p(m):
print(x, m)
n += 1
if n == 5:
break