На натуральном отрезке [a,b] найдите и выведите число N с наибольшей суммой своих делителей - Pascal ABC
Формулировка задачи:
на натуральном отрезке [a,b] найдите и выведите число N с наибольшей суммой своих делителей Через Repeat или While
Программа выводит нули. Помогите решить правильно.
Решение задачи: «На натуральном отрезке [a,b] найдите и выведите число N с наибольшей суммой своих делителей»
textual
Листинг программы
var
a, b, i, j, s, max, N, d: longint;
begin
write('Введите натуральное число a=');
readln(a);
write('Введите натуральное число,больше ', a, ' b=');
readln(b);
max := 0;
d := a;
i := b;
repeat
s := 0;
for j := 2 to i div 2 do
if i mod j = 0 then
s := s + j;
if s > max then
begin
max := s;
N := i;
end;
d := d + 1;
until d < b;
write('Наибольшую сумму делителей=', max, ' имеет число ', N);
end.
Объяснение кода листинга программы
- В первой строке кода объявляются переменные a, b, i, j, s, max и N, которые будут использоваться для решения задачи. Переменная d инициализируется значением типа longint.
- Затем происходит чтение значений переменных a и b с помощью функции readln.
- Переменная max инициализируется значением 0.
- Переменная d инициализируется значением переменной a.
- Переменная i инициализируется значением переменной b.
- Затем идет цикл repeat, который будет выполняться до тех пор, пока переменная d не станет меньше переменной b.
- Внутри цикла переменная s инициализируется значением 0.
- Для каждого числа j (от 2 до i/2) выполняется проверка, делится ли число i на j без остатка. Если да, то к переменной s прибавляется значение j.
- Если сумма делителей числа i больше значения переменной max, то переменные max и N инициализируются соответствующими значениями.
- После окончания внутреннего цикла переменная d увеличивается на 1.
- Когда переменная d становится меньше переменной b, цикл repeat завершается.
- В последней строке кода выводится сообщение, содержащее значения переменных max и N.