Всем привет, продолжаем штурмовать вторую часть ЕГЭ по информатике. Сегодня на очереди 25-ое задание. Поехали!
Покажу сразу решение, а после разберём его по кусочкам
Начинаем разбор по частям мною написанного
Для начала разберёмся с функцией get_m(n).
Эта функция принимает число и возвращает число М. М по задаче - это сумма минимального и максимального натурального делителя числа, не считая 1 и самого числа. Если таких нет, то М равно нулю.
Создаю две переменные. Максимальный и минимальный делители.
Т.к. минимальный делитель - это первый делитель, если мы будем перебирать числа от 2 до n-1, то найдя первый делитель при таком переборе, сразу сохраняем его и прерываем перебор.
range(a, b) - перебор чисел от a включая до b не включая. По сути, [a, b)
То же самое, только с максимальным, но тут перебор будет от n-1 до 2 соответственно
range(start, stop, step) - из подсказок самого Python
Т.к. начальные значения max_divider и min_divider равны нулю, а если мы и находим делитель, то он точно больше 1, то равенство нулю после поиска означает то, что делители не были найдены, откуда следует, что число простое. В таком случае нужно вернуть 0. Но сумма двух нулей и так будет 0. Так что можно просто возвращать сумму этих двух переменных.
Теперь основная часть кода
Создаём переменную number - будет хранить потенциально верное число. Сказано, что числа искать надо после 700000, значит первое потенциально верное число равно 700001.
count - переменная-счётчик, хранит количество найденных чисел. В начале она равно 0.
Запускаем бесконечный цикл. По сути, можно было и с условием сделать, но мне всё равно. for тут плохо подходит - мы не знаем, сколько чисел нужно перебрать, чтобы найти 5 верных.
В цикле получаем число М для текущего числа. В условии сказано, что числа подходит, если М оканчивается на 8. Найти последую цифру просто: это остаток от деления на 10.
Если М оканчивается на 8, то пишем сначала число, а потом его значение М. Всё это сказано в условии задачи. Также не забываем посчитать число, +1 за каждое найденное. Если вывели 5 чисел, то цикл нужно прервать, иначе он будет работать в теории бесконечно.
Также постоянно нужно увеличивать текущее число, мы же сначала попробуем 700001, потом 700002, потом 700003...
Запускаем, спустя полторы секунды видим это: