Задать вопрос
15 февраля, 14:36

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

Найти натуральное число из интервала от 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.

+5
Ответы (1)
  1. 15 февраля, 18:17
    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.
Знаете ответ?
Сомневаетесь в ответе?
Найдите правильный ответ на вопрос ✅ «Найдите ошибку. (выводит просто большее число) Найти натуральное число из интервала от a до b с максимальной суммой делителей. var max, i, ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Сделать так чтобы Writeln был заменен другим словом и повторялься не больше двух раз program choise; var N_M:integer; writeln (' введи номер месяца ') ; readln (N_M) ; case N_M of 1:writeln (' январь ') ; 2:writeln (' февраль ') ;
Ответы (1)
Исправить ошибки в паскале program massiv2; type mas=array [1 ... 100] of integer; var a: = Max; i, n, min, max, b : integer; недопустимый символ: = (д/б просто :; неизвесмтное имя типа max) begin writeln ('n=') ; readln (n) ;
Ответы (2)
Program n_66; var x, max:real; i: integer; begin writeln ('Введите число') ; readln (max) ; for i:=1 to 9 do begin writeln (x) ; if x>max then max:=x end writeln ('максимум - ', max') ; end. Встречено 'writeln' а ожидалось '; '
Ответы (1)
Запиши программу в Паскале для вычисления площади прямоугольника со сторонами c и m. 1) begin writeln ('Введи длину и ширину прямоугольника c и m') ; readln (c, m) ; s:=c*m; writeln ('s=', s) ; readln; end.
Ответы (1)
Program a2; var n, i, min, max, x:integer; begin Writeln ('Введите колицество человек в классе:') ; Readln (n) ; Writeln ('Введите рост 1 ученика:') ; readln (x) ; min:=x; max:=x; for i:=2 to n do begin Writeln ('Введите рост ', i,' ученика:') ;
Ответы (1)