Напишите программу, которая перебирает целые числа, большие 700 000, в порядке возрастания и ищет среди них такие, у которых есть натуральный делитель, оканчивающийся на цифру 7 и не равный ни самому числу, ни числу 7.
Выведите первые пять найденных чисел и для каждого - соответствующий наименьший делитель, оканчивающийся на цифру 7, не равный ни самому числу, ни числу 7.
Формат вывода: для каждого из пяти найденных чисел в отдельной строке сначала выводится само число, затем - значение наименьшего делителя, оканчивающегося на цифру 7, не равного ни самому числу, ни числу 7.
Строки выводятся в порядке возрастания найденных чисел.
Количество строк в таблице для ответа избыточно.
Решение
🔹 Шаг 1. Идея решения задачи
📌 Нужно:
перебирать числа больше 700 000;
для каждого искать натуральный делитель, который:
оканчивается на цифру 7;
не равен 7;
не равен самому числу;
если такой делитель есть — берём наименьший;
вывести первые 5 таких чисел.
🔹 Шаг 2. Подготовка счётчика и перебор чисел
N = 700_000
c = 0
for x in range(N, 10**10):
📌 Что происходит:
c — сколько подходящих чисел уже найдено;
перебираем числа, начиная с 700 000;
верхняя граница взята с запасом (цикл остановится раньше).
🔹 Шаг 3. Поиск делителей числа
for d in range(17, x//2+1, 10):
📌 Объяснение:
делители проверяем до √n — этого достаточно;
перебор идёт с шагом 10, начиная с 17, чтобы рассматривать только числа, оканчивающиеся на 7;
делитель 7 по условию запрещён.
🔹 Шаг 4. Проверка условий для делителя
if x % d == 0 and d % 10 == 7:
📌 Проверяем сразу два условия:
Как только нашли
первый (наименьший) такой делитель — переходим к выводу.
🔹 Шаг 5. Вывод результата и остановка программы
print(x,d)
c += 1
if c == 5:
exit()
break
📌 Что здесь происходит: