№25 · решено
Произведение двух простых с «67»
Числа > 2 726 695 891, произведение двух простых, каждый с «67» ровно один раз. Первые 5 и наименьший множитель.
Источник: ФИПИ, № 31369
Ответвпиши то, что вывела программа
Показать разбор
- Напиши p(x), которая проверяет простоту перебором делителей до корня.
- Напиши good(x): число простое и «67» встречается в его записи ровно один раз.
- Напиши f(x): перебирай делители d до корня и добавляй d и x // d в список, если оба хорошие.
- Перебирай числа по возрастанию, начиная со следующего за данным в условии.
- Если в списке ровно два числа, выводи x и min(D). После пятого найденного останавливайся.
def p(x):
return x > 1 and all(x % d != 0 for d in range(2, int(x ** 0.5) + 1))
def good(x):
return str(x).count('67') == 1 and p(x)
def f(x):
D = []
for d in range(2, int(x ** 0.5) + 1):
if x % d == 0:
if good(d) and good(x // d):
D.append(d)
D.append(x // d)
return D
n = 0
for x in range(2726695892, 10 ** 20):
D = f(x)
if len(D) == 2:
print(x, min(D))
n += 1
if n == 5:
break