这里可定不能用相等判断啊
#include<stdio.h>
int main()
{int a,b;
for(a=1;a<=1000;a++)
{
int x=0;
for(b=1;b<a;b++)
{if(a%b==0)
x=x+b;}
if(a==x){
printf("%d\n",a);
for(b=1;b<a;b++)
{if(a%b==0)
printf("%d\t",b);}
printf("\n");
}
}
return 0;
}
//我们可以创建一个变量存放要找数字的因子之和,如果这个数恰好等于它的因子之和,那么进行对他所有的因子打印输出。
#include<stdio.h>
void main()
{
int n,i,sum,x;
scanf("%d",&x);
for(n = 2;n <= x;++n){
sum = 0;//存放因子之和
for(i = 1;i < n;++i){
if(n % i == 0){
sum += i;
}
}
if(sum == n){//如果因子和与输入的数字相同,说明 n 是完数
printf("\n%d\n",sum);
for(i = 1;i < n;++i){
if(n % i == 0){
printf("%5d",i);//打印 n 的因子
}
}
}
}
}