#include"stdio.h"
int main(void)
{
int a,b,sum=0;
for(a=6;a<=1000;a++)
{
for(b=1;b<a;b++)
{
if(a%b==0)
{
if(a==6&&b==1)
{
printf("1\t");
sum+=b;
}
else
{
sum+=b;
printf("%d\t",b);
}
}
}
if(sum==a)
printf("他们因数之和是%d\n\n。",sum);
sum=0;
}
}
执行结果如下;
有疑问继续追问;如解决您的问题,望采纳;
追问为什么中间加了个print会出现那么多行数字。
追答就是从a=6开始到a=999一个一个的算出他们的各自的因数和;如果求得的因数之和sum刚好等于a;那就把它输出来;一千以内有三个;【if(sum==a) printf("%-4d的因数之和是%d\n", a, sum);】这算一个执行语句;在a等于sum时输出;你要是改成【if(sum==a) printf("%d ", sum);】这样那就只有输出三个数了。