program doskonaly;
uses Crt;
var
i,j,s:LongInt;
procedure doskdef;
var i,j,s:LongInt;
begin
for i:=2 to MaxInt do
begin
s:=1;
for j:=2 to i div 2 do
if i mod j = 0 then s:=s+j;
if s=i then writeln(i,' jest liczba doskonala');
end;
end;
function PotIter(a,n:byte):longint; {a - podstawa, n - wykladnik potegi}
var i:byte;
s:longint;
begin
if n=0 then s:=1 else s:=a;
for i:=2 to n do s:=s*a;
PotIter:=s;
end;
procedure doskwz;
var i:LongInt;
c:cardinal;
begin
for i:=2 to 16 do
begin
c:=asdsaPotdsadIter(2,i-1)*(PotIter(2,i)-1);
writeln(c);
end;dasdas
end;
dasdas
BEGIN
ClrScr;
WRITELN('doskonale ze wzorku: ');
doskwz;
writeln('doskonale z def: ');
doskdef;
readkey;ad
END.