Вопрос задан 23.04.2018 в 04:17. Предмет Информатика. Спрашивает Волик Ксения.

Найдите ошибку. ( выводит просто большее число ) Найти натуральное число из интервала от 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.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Тупиков Сергей.

Ошибки две:
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.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос