一个数如果恰好等于它的因子之和,这个数就称为“完数”(因子不包括它本身)。例如6=1+2+3.
找出1000之内的完数代码:
#include <stdio.h>
int main()
{
int i = 0;
int arr[100] = { 0 }; //定义一个数组来存放每个数产生的因子
for (i = 2; i <= 1000; i++)
{
int m = 0;
int k = 0;
int j = 0;
int sum = 0;
for (m = 1; m < i; m++)//此处不能用<=;完数的因子不能包括它本身
{
if (i%m == 0) //找出i除了他本身之外的所有因子
{
arr[k] = m; //将找到的因子存放在数组中
k++; //用k的值来判断i共有多少个因子
}
}
for (j = 0; j < k ; j++)
//此处不能用<=;因为数组的下标从0开始,并且存放因子的时候也是a[0]开始存的
{
sum = arr[j] + sum; //用sum来表示它的因子相加的和
}
if (sum == i) //如果因子之和等于i,则将i打印出来.
{
printf("%d\n",i);
}
}
return 0;
}