Решение: Поиск делителей на 9
Напишите программу, которая перебирает целые числа, большие 600 000, в порядке возрастания и ищет среди них такие, у которых есть натуральный делитель, оканчивающийся на цифру 9 и не равный ни самому числу, ни числу 9. Выведите первые пять найденных чисел и для каждого минимальный делитель, оканчивающийся на цифру 9, не равный ни самому числу, ни числу 9. Для каждого найденного числа сначала выведите само число, затем значение его наименьшего подходящего делителя. Строки выводятся в порядке возрастания найденных чисел.
Решение по шагам
6 шаговПеребираем числа, начиная с 600001. Для каждого числа проверяем делители в порядке возрастания и выбираем первый делитель, оканчивающийся цифрой 9, кроме 9 и самого числа.
$$n \bmod d = 0,\quad d \bmod 10 = 9,\quad d \ne 9,\quad d \ne n$$Для числа 600001 наименьший подходящий делитель равен 19: $600001 = 19 \cdot 31579$.
Для числа 600005 наименьший подходящий делитель равен 49: $600005 = 49 \cdot 12245$.
Для числа 600010 наименьший подходящий делитель равен 29: $600010 = 29 \cdot 20690$.
Для числа 600015 наименьший подходящий делитель равен 39: $600015 = 39 \cdot 15385$.
Для числа 600020 наименьший подходящий делитель равен 19: $600020 = 19 \cdot 31580$.
600001 19; 600005 49; 600010 29; 600015 39; 600020 19
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Включают делитель 9.
Допускают в качестве делителя само число.
Выводят первый найденный делитель, не проверяя, что он минимальный.
Проверяют только числа, кратные 19, и пропускают числа с другими подходящими делителями.