问题描述
编写一程序,求出1000以内的所有完全数。(完全数:一个数如果恰好等于它除自身外的所有因子之和,则称该数为完全数。如6=1+2+3,则6是完全数。)
代码实现:
#include<stdio.h>
#include<math.h>
void main()
{
int t,i,s,a=2;
printf("1000以内有以下几个完全数:\n");
while(a<1000)
{
s=1;
i=2;
t=(int)sqrt(a); //求a的平方根取整
do{
if(a%i==0)
s+=i+a/i;
i++;
}while(i<t);
if(t*t==a) //判断a是否是完全平方数
s+=t;
if(s==a)
{
printf("%d=1",a);
for(i=2;i<a;i++){
if(a%i==0)
printf("+%d",i);
}
printf("\n");
}
a++;
}
}
代码运行截图: