搞pascal语言的,谁知道这题怎么作?

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:17:04
求2至1000中的完数。完数是指此数的所有因子之各等于此数,如:28=1+2+4+7+14。

var f,n,i1,j:integer;
begin
for n:=2 to 1000 do
begin
for i1:=1 to n div 2 do
if n mod i=0 then
f:=f+i1;
if f=n then write(n,' ');
end.
var f,n,i1,j:integer;
begin
for n:=2 to 1000 do
begin
for i1:=1 to n div 2 do
if n mod i=0 then
f:=f+i1;
if f=n then write(n,' ');
end.

枚举,一个一个试.
从2到1000,判断它是不是完数,如果是完数就记录下.

至于判断它是不是完数,就循环尝试从1到它的一半,记录下,它的因子的和,判断结果是否和它相等,相等的就是完数了.

var
sum,n,i,j:integer;
begin
for n:=2 to 1000 do
begin
for i:=1 to n div 2 do
if n mod i=0 then
sum:=sum+i;
if sum=n then write(n,' ');
end.