一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写一程序找出1000以内的所有完数

2024-12-10 18:20:14
推荐回答(3个)
回答1:

源代码如下:

#include

main()

{

int i,j;

int sum;

for(i=1;i<=1000;i++)

{

sum=0;

 for(j=1;j

 {

if(i%j==0)

sum+=j;

}

 if(sum==i)

 {

printf("%d its factors are ",i);

for(j=1;j

 if(i%j==0)

printf("%d ",j);

 }

 printf("\n");

}

扩展资料

1、完全数是一些特殊的自然数,它所有的真因子即除了自身以外的约数的和即因子函数,恰好等于它本身。

2、第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28。

3、有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4 + 7 + 14=28。后面的数是496、8128。

回答2:

您这循环体里面明显写错了,另外因为你是return 0;所以主函数要加int,还有你的程序可读性太差,像我和楼上的仁兄一样就容易读多了~希望对你有帮助
int main(){
int i,m,sum=0;
for(i=2;i<1000;i++){
for(m=1;m if(i%m==0) sum=sum+m;
}
if(sum==i) printf("%d 是完数",i);
sum=0; //sum清零
}
return 0;
}
另外题目也有问题,一个数的因子包含了这个数本身,所以我只能认为是除这个数本身的因数和了。

回答3:

#include"stdio.h"
main(){
int i,m,sum=0;
for(i=2;i<1000;i++){
sum=0;
for(m=1;m if(i%m==0){
sum=sum+m;
}
}
if(sum==i){
printf("%d 是完数",i);}
}
return 0;}