С клавиатуры вводятся два натуральных числа a, b (a<=b). Найти в диапазоне от a до b (включая границы) число, имеющее максимальную сумму делителей. (PASCAL)
function CalcDivisors(n: integer): integer; var k, sum: integer; begin sum := 1; for k := 2 to n div 2 do begin if (n mod k = 0) then sum := sum + k; end; Result := sum; end;
begin writeln('Введите два натуральных числа a и b (a<=b): '); readln(a, b);
num := a; maxSum := CalcDivisors(num);
for i := a + 1 to b do begin sum := CalcDivisors(i); if (sum > maxSum) then begin maxSum := sum; num := i; end; end;
program MaxSumOfDivisors;
var
a, b, num, maxSum, sum, i, j: integer;
function CalcDivisors(n: integer): integer;
var
k, sum: integer;
begin
sum := 1;
for k := 2 to n div 2 do
begin
if (n mod k = 0) then
sum := sum + k;
end;
Result := sum;
end;
begin
writeln('Введите два натуральных числа a и b (a<=b): ');
readln(a, b);
num := a;
maxSum := CalcDivisors(num);
for i := a + 1 to b do
begin
sum := CalcDivisors(i);
if (sum > maxSum) then
begin
maxSum := sum;
num := i;
end;
end;
writeln('Число с максимальной суммой делителей: ', num);
writeln('Сумма делителей: ', maxSum);
end.