程序分析:
1. 完数:完全数又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为完全数。
2. 在了解了什么是完数之后,我们就要知道1000以内的所有数字的因数都是什么,在求因子时是不能算这个数本身的,所以我们这里写的双层 for 循环,在第二层中因子是小于第一层给定的数的,而不是小于等于;
3. 在求完所有的因数之后再求出他们的和是否等于第一层循环中给定的数字。若相等则说明该数是完数,否则,就不是。
#include<stdio.h>
int main()
{
int i,j,k,n,sum;
int a[256];
for (i = 2; i < 1000; i++)
{
sum =a[0]= 1;
k = 0;
for (j = 2; j < i; j++)
{
if (i % j == 0)
{
sum = sum+j;
a[++k] = j;
}
}
if (sum == i)
{
printf("%d its factors are %d,", i,a[0]);
for (n = 1; n <= k; n++)
{
printf("%d,", a[n]);
}
printf("\n");
}
}
return 0;
}
调试结果: