Найти в Дзене
Сельский учитель

Решение задания 25 демонстрационного варианта ЕГЭ по информатике 2025

Задача: Пусть M – сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение M равным нулю. Напишите программу, которая перебирает целые числа, большие 800 000, в порядке возрастания и ищет среди них такие, для которых M оканчивается на 4. В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце – соответствующие им значения M. Например, для числа 24 Делители: 1, 2, 3, 4, 8, 12, 24. Не считая единицы и самого числа: 2, 3, 4, 8, 12. Сумма минимального и максимального делителей 2 + 12 = 14, оканчивается на 4. Сумма минимального и максимального делителей М=14 окачивается на 4. Например, для числа 21 Делители: 1, 3, 7, 21. Не считая единицы и самого числа: 3, 7. Сумма минимального и максимального делителей 3+7 = 10, не оканчивается на 4. М=0 Решение: Комментарий к коду: k = 0- счётчик чисел, для которых сумма делителей числа n (перем

Задача:

Пусть M – сумма минимального и максимального натуральных делителей целого числа, не считая единицы и самого числа. Если таких делителей у числа нет, то считаем значение M равным нулю.

Напишите программу, которая перебирает целые числа, большие 800 000, в порядке возрастания и ищет среди них такие, для которых M оканчивается на 4. В ответе запишите в первом столбце таблицы первые пять найденных чисел в порядке возрастания, а во втором столбце – соответствующие им

значения M.

Например, для числа 24

Делители: 1, 2, 3, 4, 8, 12, 24. Не считая единицы и самого числа: 2, 3, 4, 8, 12. Сумма минимального и максимального делителей 2 + 12 = 14, оканчивается на 4. Сумма минимального и максимального делителей М=14 окачивается на 4.

Например, для числа 21

Делители: 1, 3, 7, 21. Не считая единицы и самого числа: 3, 7. Сумма минимального и максимального делителей 3+7 = 10, не оканчивается на 4. М=0

Решение:

Комментарий к коду:

k = 0- счётчик чисел, для которых сумма делителей числа n (переменная М) оканчивается на 4

n = 800000- начальное значение диапазона чисел 800000, 800001, 800002, …

while k<5:пока число найденных чисел меньше 5, (k=0, 1, 2 , 3 ,4 )

n=n+1 проверяем следующее число 800001, 800002, ...

mx=0 начальное значение максимального делителя примем равное нулю. В процессе перебора возможных делителей i происходит замена меньшего значения переменной на большее значение mx=max(mx,i), таким образом, по окончании цикла в переменной mx окажется значение максимального делителя. Функция max(mx,i) находит максимальное значение из двух чисел mx и i.

mn=n+1 – начальное значение минимального делителя, (в данном случае это 800001). В процессе перебора возможных делителей i происходит замена большего значения переменной mn на меньшее значение mn=min(mn,i), таким образом, по окончании цикла в переменной mn окажется значение минимального делителя. Функция mn=min(mn,i), находит минимальное значение из двух чисел mn и i,

for i in range(2, int(n//2)+1): в цикле перебираем делители i числа n от 2 до половины (например, для числа 20 - делители: 1, 2, 4, 5, 10, 20, до половины диапазона, не считая самого числа)

Для чего в параметре цикла нужен«+1»?

В цикле for i in range(2, 10): i примет значения: 2, 3, 4, 5, 6, 7, 8, 9.

Операция int округляет дробь n//2 до целого числа

if n%i==0: если остаток от деления очередного n на делитель i равен нулю (т.е. i является делителем, то, сравниваем делитель i с числом в перемнной mx и числом в переменной mn.

Переменную mx заменяем на максимальное значение из i и mx, а переменную mn заменяем на минимальное значение из i и mn.

mx=max(mx,i)

mn=min(mn,i)

Таким образом, по окончании цикла в этих переменных окажутся максимальный и минимальный делители для очередного выбранного в цикле значения числа n.

По окончании цикла for i in range(2, int(n//2)+1), находим сумму минимального и максимального делителя M=mn+mx . Если остаток от деления на 10 равен 4, if M%10==4, выводим на экран значение найденного числа n и суммы его делителей M,

print(n,M).

Увеличиваем счётчик найденных чисел n на 1, k=k+1

и возвращаемся на выполнение внешнего цикла while k<5.

Цикл выполняется до тех пор, пока не будет выведено на экран 5 чисел, для которых сумма делителей оканчивается на 4.

Ответ:

800004 400004

800009 114294

800013 266674

800024 400014

800033 61554