{Файл: prog8_2.pas Задача: Даны три целых положительных числа a, b и c. Выбрать из них то число, сумма делителей которого максимальна. } const n=10; type masiv = array [1.. n] of integer; var a, b, c : integer; max, s1 :integer; s: string; {Функция считает сумму делителей} procedure Sum (var s1 :integer; x : integer) ; begin {Sum} s1 := s1 + x; end; {Sum} {Функция находит делитель числа} procedure delitel( N :integer); var p : integer; begin {delitel} p:=2; {Первое простое число} s1:=0; {Разложенние} while N > 1 do {Пока N раскладывается} if N mod p = 0 then {Если N делится на p нацело} begin Sum(s1, p); {запускаем сумму} N:=N div p ; {Делим N на множитель p} end else inc(p); {Увеличиваем на 1 - переходим к следующему числу p} end; {delitel} procedure FMax (var mmax : integer; y : integer); begin {FMax} if mmax < s1 then begin mmax:= s1; s:=''; Str (y, s); end; end; {FMax} begin {Prog8_2} writeln ('Введите числа a'); readln (a); writeln ('Введите числа b'); readln (b); writeln ('Введите числа c'); readln (c); max:= 0; delitel(a); FMax(max, a); delitel(b); FMax(max, b); delitel(c); FMax(max, c); if s = '' then write(' Делителей не у какого числа нету') else write ('Число, сумма делителей которого максимальна это ',s); end. {Prog8_2}