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

Произведение двух простых с «67»

Числа > 2 726 695 891, произведение двух простых, каждый с «67» ровно один раз. Первые 5 и наименьший множитель.

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

Ответвпиши то, что вывела программа
Показать разбор
  1. Напиши p(x), которая проверяет простоту перебором делителей до корня.
  2. Напиши good(x): число простое и «67» встречается в его записи ровно один раз.
  3. Напиши f(x): перебирай делители d до корня и добавляй d и x // d в список, если оба хорошие.
  4. Перебирай числа по возрастанию, начиная со следующего за данным в условии.
  5. Если в списке ровно два числа, выводи 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