Function Sov(z:integer):boolean;
var i,k:integer;
begin
k:=0;
for i:=1 to z div 2 do
if z mod i=0 then k:=k+i;
if k<>z then Sov:=false
else Sov:=true;
end;
в программе:
code: #delphi
procedure TForm1.Button1Click(Sender: TObject);
var n,i:integer;
begin
n:=strtoint(Edit1.Text);
for i:=1 to n do
if Sov(i) then Edit2.Text:=Edit2.Text+inttostr(i)+' ';
end;