Число совершенно, если оно равно сумме всех своих делителей, кроме самого себя. Пример: 6=1+2+3. Найдите все совершенные числа от 1 до 1000 и выведите их на экран. Подсказка: вам необходимо найти все делители от 1 до исследуемого числа. Делителем числа называется число, которое делит данное без остатка (a mod b=0).
const N = 1000; var i,d,j,k,sum: integer; dv: array[1..N] of integer; begin for i:=2 to N do begin //write(i,': '); d := 1; j := 1; while d do begin if i mod d = 0 then begin dv[j] := d; j := j+1; //write(d,','); end; d := d + 1; end; sum := 0; for k:=1 to j-1 do sum := sum + dv[k]; if sum = i then writeln(i,' - perfect!'); //writeln; end; readln; end.
Комментарии
pascal
Есть более простой путь:
Не понятно
//write(i,': '); и что тут
означает " // "?
и
dv[j] ---- это у тебя такае
зменная?
Не могли бы Вы более подробно
Не могли бы Вы более подробно объяснять как она работает? Не совсем понимаю, к чему увлечение переменных d и j на 1.
Я решал не через массив,
Я решал не через массив, гораздо проще и доступнее. Ответы как я понял 6, 28 и 496
Делители можно сразу
Делители можно сразу суммировать, а не помещать их сначала в массив.