首先题目说明了什么样的数为完数,这个数的因子之和加起来为这个数。
这里就是一个条件判断这个数的因子,并将这些因子输出---注意1是每个数都有的固定因子,这个因子也是要用到循环所以要考虑1-开始值为多少经刚刚的分析1是固有的那就要从2开始,2-结束条件为可以看到给的样例中输出的都是小于等于二分之这个数,3-factor++;
还有一个条件,这个数的因子数之和等于这个数,这个数用i表示,常规循环,这里要定义一个变量sum,注意这里sum初始值为1,因为有个固定因子1,在判断完所有的因子后,sum=sum+factor;将因子数之和储存在sum中,若sum==i则就输出i
代码如下
#include<stdio.h>
int main()
{
int i, factor, sum;
for (i = 2; i <= 1000; i++)
{
sum = 1;
for (factor = 2; factor <= i / 2; factor++)
{
if (i % factor == 0)
{
sum = sum + factor;
}
}
if (sum == i)
{
printf("%d its factors 1", i);
for (factor = 2; factor <= i / 2; factor++)
{
if (i % factor == 0)
{
printf(" %d", factor);
}
}
printf("\n");
}
}
return 0;
}