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:=PotIter(2,i-1)*(PotIter(2,i)-1); writeln(c); end; end; BEGIN ClrScr; WRITELN('doskonale ze wzorku: '); doskwz; writeln('doskonale z def: '); doskdef; readkey; END.