• Найдите ошибку. ( выводит просто большее число )
    Найти натуральное число из интервала от 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 k>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 > max then     begin      max := k;      z := i;    end;  end;  writeln(z);end.
    • Автор:

      indiab2ol
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years