'''
Рассмотрим произвольное натуральное число, представим его всеми возможными способами
в виде произведения двух натуральных чисел и найдём для каждого такого произведения
разность сомножителей.
Подходящей будем называть пару сомножителей, разность между которыми не превышает 120.
Найдите все натуральные числа, принадлежащие отрезку [2000000; 3000000],
у которых есть не менее трёх подходящих пар сомножителей.
В ответе перечислите найденные числа в порядке возрастания,
справа от каждого запишите наибольший из всех сомножителей,
образующих подходящие пары.
'''


for number in range(2000000, 3000000 + 1):

    # печать, чтобы убедиться, что не зависла программа
    if number % 100000 == 0:
        print(number)

    # счетчик подходящих пар делителей
    cnt = 0

    # Перебираем делители, начиная с корня из числа:
    # именно с этого края будут делители, отличающиеся не более, чем на 120.
    for divisor in range(int(number**0.5), 0, -1):

        # проверка, что еще можем получить подходящие пары делителей.
        # Такая проверка очень сильно сокращает время выполнения кода
        if number / divisor - divisor > 120:
            break

        # подсчитываем число подходящих делителей
        # и запоминаем самый маленький подходящий делитель
        if number % divisor == 0:
            mn_divisor = divisor
            cnt += 1

    # Если пар не меньше 3, то печатаем число и его максимальный делитель
    # (он "обратен" сохраненному ранее минимальному делителю)
    if cnt >= 3:
        print(number, number // mn_divisor)


    '''
    # вариант медленнее (минут 10 на работе), поскольку останавливается только тогда,
    # когда таки найдет пару делителей отличающихся более, чем на 120
    for divisor in range(int(number**0.5), 0, -1):
        if number % divisor == 0:
            if number // divisor - divisor <= 120:
                mn_divisor = divisor
                # divisors.append(f'{number // divisor} * {divisor}')
                cnt += 1
            else:
                if cnt >= 3:
                    print(number, number // mn_divisor)
                    break
    '''
