编写一个已知整数判断其是否是完全数的函数,并用该函数输出1000之内的所有完全数

问题描述:

编写一个已知整数判断其是否是完全数的函数,并用该函数输出1000之内的所有完全数
如果一个整数(>1)的各因子(包括1但不包括整数自身)之和等於该整数,称这样的整数为完全数,例如6=1+2+3所以6是完全数

//完全数判断函数
function IsPerfectNum(i:LongInt):Boolean ;
var
sum,k:LongInt;
begin
sum:=1;
for k:= 2 to i div 2 do
if i mod k=0 then sum:=sum+k;
if i=sum then
Result:= true
else
Result:=false;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
idx: Integer;
begin
for idx := 2 to 1000 do
begin
if IsPerfectNum(idx) then
begin
Memo.Lines.Add(IntToStr(idx));
end;
end;
end;
输出:
6
28
496