Процедура печатает число, если в неё передается n, большее единицы, и при этом сначала срабатывают две процедуры, вложенные в неё.
Передаётся число 10. Оно больше 1. Начинается процедура от числа 7. Оно больше 1. Начинается процедура от числа 4. Оно больше 1. Начинается процедура от числа 1. Оно не больше 1.
Возвращаемся к числу 4. Начинается f(4 div 2), то есть процедура от числа 2. Оно больше 1. Начинается процедура от числа -1. Оно меньше 1. Начинается процедура от 2 div 2, т.е от 1. Число не больше 1. Обе процедуры для двойки выполнены. Печатается 2.
Обе процедуры для числа 4 тоже выполнены. Печатается 4.
Возвращаемся к числу 7. Выполняется вторая процедура для 7, то есть f(3). Обе её процедуры ничего не печатают. Тогда она сама печатает 3.
Обе процедуры для числа 7 выполнены. Печатается 7.
Теперь к самому первому числу 10. Начинается вторая его процедура, то есть от числа 5. Начинается первая процедура от 5, то есть f(2). Обе процедуры для числа 2 ничего не делают, печатается 2. Вторая процедура от 5 тоже 2. Аналогично печатается 2.
Объявляем переменные P,i,kc,kn как целочисленный тип.
begin
Начало программы.
write('P='); //вводим целое число
Выводим на экран "P=".
readln(P);
Считываем переменную P с клавиатуры и переходим на новую строчку.
kc:=0; //четные делители
Присваиваем переменной kc, в которой будет храниться количество четных делителей, значение 0.
kn:=0; //нечетные делители
Присваиваем переменной kn, в которой будет храниться количество нечетных делителей, значение 0.
for i:=2 to P do //от 2 до P
Объявляем цикл с переменной i от 2 до P (до числа, которое мы ввели с клавиатуры).
if P mod i=0 then //если n делится на i, это делитель if odd(i)then inc(kn) else inc(kc); //нечетный или четный
Если остаток от деления P на i равен нулю, то есть P делится на i без остатка, то смотрим: если i нечетная, то увеличиваем kn на 1, иначе (то есть если i четная), увеличиваем kc на 1.
Cумма равна 35.
Процедура печатает число, если в неё передается n, большее единицы, и при этом сначала срабатывают две процедуры, вложенные в неё.
Передаётся число 10. Оно больше 1. Начинается процедура от числа 7. Оно больше 1. Начинается процедура от числа 4. Оно больше 1. Начинается процедура от числа 1. Оно не больше 1.
Возвращаемся к числу 4. Начинается f(4 div 2), то есть процедура от числа 2. Оно больше 1. Начинается процедура от числа -1. Оно меньше 1. Начинается процедура от 2 div 2, т.е от 1. Число не больше 1. Обе процедуры для двойки выполнены. Печатается 2.
Обе процедуры для числа 4 тоже выполнены. Печатается 4.
Возвращаемся к числу 7. Выполняется вторая процедура для 7, то есть f(3). Обе её процедуры ничего не печатают. Тогда она сама печатает 3.
Обе процедуры для числа 7 выполнены. Печатается 7.
Теперь к самому первому числу 10. Начинается вторая его процедура, то есть от числа 5. Начинается первая процедура от 5, то есть f(2). Обе процедуры для числа 2 ничего не делают, печатается 2. Вторая процедура от 5 тоже 2. Аналогично печатается 2.
Обе процедуры числа 5 выполнены. Печатается 5.
Обе процедуры числа 10 выполнены. Печатается 10.
Ура! осталось посчитать сумму напечатанного.
2+4+3+7+2+2+5+10=35
Объявляем переменные P,i,kc,kn как целочисленный тип.
beginНачало программы.
write('P='); //вводим целое числоВыводим на экран "P=".
readln(P);Считываем переменную P с клавиатуры и переходим на новую строчку.
kc:=0; //четные делителиПрисваиваем переменной kc, в которой будет храниться количество четных делителей, значение 0.
kn:=0; //нечетные делителиПрисваиваем переменной kn, в которой будет храниться количество нечетных делителей, значение 0.
for i:=2 to P do //от 2 до PОбъявляем цикл с переменной i от 2 до P (до числа, которое мы ввели с клавиатуры).
if P mod i=0 then //если n делится на i, это делитель if odd(i)then inc(kn) else inc(kc); //нечетный или четныйЕсли остаток от деления P на i равен нулю, то есть P делится на i без остатка, то смотрим: если i нечетная, то увеличиваем kn на 1, иначе (то есть если i четная), увеличиваем kc на 1.
writeln('Количество четных делителей=',kc,' нечетных=',kn)Выводим на экран: "Количество четных делителей=", значение переменной kc, " нечетных=", значение переменной kn".
end.Конец программы.