
Вопрос задан 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.

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

Отвечает Тупиков Сергей.
Ошибки две:
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.


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

Информатика 562

Информатика 404

Информатика 31

Информатика 76

Информатика 16

Информатика 41

Информатика 31
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili