Найдите ошибку. ( выводит просто большее число )Найти натуральное число из

Найдите ошибку. ( выводит просто большее число )
Найти естественное число из промежутка от a до b с наибольшей суммой делителей.
var max,i,j,k,a,b,z:integer;
begin
k:=0;
max:=0;
readln(a,b);
for i:=a to b do
begin
for j:=1 to i do
if (i mod j)=0 then
k:=k+1;
if kgt;max then
begin
max:=k;
z:=i;
end;
end;
writeln (z);
end.

Задать свой вопрос
1 ответ
Оплошности две:
1) Не забывайте обнулять переменную k. У вас она не обнулялась, и так как каждый раз прибавлялось что-то, то максимум достигался на заключительном числе.
2) Необходимо не количество, а сумма делителей, потому к k надобно добавлять не 1, а i.

Пример исправленной программки:

var
  max, i, j, k, a, b, z: integer;
 
begin
  max := 0;
  readln(a, b);
  for i := a to b do
  begin
    k := 0;
    for j := 1 to i do
      if (i mod j) = 0 then 
        k := k + j;
    if k gt; max then 
    begin
      max := k;
      z := i;
    end;
  end;
  writeln(z);
end.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт