一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
``找出1000以内的所有完数。
#include <stdio.h>
//一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
// 找出1000以内的所有完数。
int main()
{
int number = 0;
int arr[100] = { }; //定义一个数组来存放每个数产生的因子
for (number = 2; number <= 1000; number++)
{
int m = 0;
int k = 0;
int j = 0;
int sum = 0;
for (m = 1; m < number; m++)//此处不能用<=;完数的因子不能包括它本身
{
if (number%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 == number) //如果因子之和等于i,则将i打印出来.
{
printf("%d\n",number);
}
}
return 0;
}