Напишите программу, которая перебирает целые числа, большие 800000, в порядке возрастания и ищет среди них такие, у которых есть натуральный делитель, оканчивающийся на цифру 9 и не равный ни самому числу, ни числу 9.
В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце — соответствующий минимальный делитель для каждого числа, оканчивающийся цифрой 9, не равный ни самому числу, ни числу 9.
Строки выводятся в порядке возрастания найденных чисел.
Количество строк в таблице для ответа избыточно.
Решение:
Решение на Python — Митаева Зарина Талгатовна
|
def M(x): for d in range(10,x//2+1): if x%d == 0 and d%10 == 9: return d return 0 k = 0 for i in range(800_001,1_000_000): if M(i) > 0: print(i,M(i)) k += 1 if k == 5: break |
Ответ:
800001 309
800003 47059
800004 409
800006 269
800007 39
Объяснение кода
- Функция
M(x)
:
- Определяем функцию
M(x)
, которая принимает целое число x
и ищет его минимальный делитель, оканчивающийся на цифру 9, который не равен самому числу x
и не равен 9.
- Перебираем делители
d
от 10 до половины числа x
(x//2 + 1
).
- Если
d
делит x
без остатка (x%d == 0
) и заканчивается на 9 (d%10 == 9
), возвращаем этот делитель.
- Если такой делитель не найден, возвращаем 0.
- Основная часть кода:
- Инициализируем переменную
k
, которая будет считать количество найденных чисел.
- Перебираем числа от 800001 до 999999 включительно.
- Для каждого числа вызываем функцию
M(i)
. Если функция возвращает делитель больше 0 (M(i) > 0
), выводим число и его делитель.
- Увеличиваем счётчик
k
на 1.
- Если найдено 5 чисел (
k == 5
), прекращаем выполнение цикла с помощью break
.
Этот код находит и выводит первые 5 чисел, больших 800000, у которых есть натуральный делитель, оканчивающийся на цифру 9 и не равный ни самому числу, ни числу 9, вместе с этими делителями.