题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。
例如:6=1+2+3.编程找出1000以内的所有完数。
参考程序如下
#include<stdio.h>
#define n 1000
void main()
{
int i, j, sum = 0, k = 0;
for (i = 2; i < n; i++) {
for (j = 1; j < i; j++) {
if (i % j == 0) { //j为i的因子
k += j; //所有因子累加
}
}
sum = k; //传递累加变量的值
k = 0; //每判断完一个数,将累加变量置零
if (sum == i) { //将完数写成因子相加式
printf("%d=", i);
for (i = 1; i < sum; i++) {
if (sum%i == 0) {
printf("%d", i);
if (i < sum/2) printf("+");
}
}
printf("\n");
}
}
}