Program Ex_13_s1;
uses wincrt;
var
n,m:integer;
procedure saisie(var n,m :integer);
begin repeat
writeln('Donner l''intervalle N..M avec 10 < N <= M < 31000 ');
writeln('Donner N :');
readln(n);
writeln('Donner M :');
readln(m);
until (10<n) and (n<=m) and (m<31000);
end;
function somme(x:integer):integer;
var i,s:integer;
begin s:=x+1;
for i:=2 to x-1 do if x mod i =0 then s:=s+i;
somme:=s;
end;
procedure affiche(n,m:integer);
var i,k:integer;
begin
for k:=2 to 4 do begin
writeln;
writeln('Les ',k,'-parfaits entre ',n,' et ',m,' : ');
for i:=n to m do
if somme(i) mod k=0 then write(i,'|');
writeln;
end;
end;
begin
saisie(n,m);
affiche(n,m);
end.