Напишите программу, которая перебирает целые числа, большие 800000, в порядке возрастания и ищет среди них такие, у которых есть натуральный делитель, оканчивающийся на цифру 9 и не равный ни самому числу, ни числу 9.
В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце — соответствующий минимальный делитель для каждого числа, оканчивающийся цифрой 9, не равный ни самому числу, ни числу 9.
Строки выводятся в порядке возрастания найденных чисел.
Количество строк в таблице для ответа избыточно.
ЕГЭ по информатике Основная волна (Центр) 19.06.2024 kompege.ru – задание №25
Решение:
Решение на Python — Митаева Зарина Талгатовна
|
1 2 3 4 5 6 7 8 9 10 11 12 |
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, вместе с этими делителями.
