如果一个数恰好等于它的因子之和,则称该数为“完全数”,即为完数,而本次编程的主要目的就是通过编程实现统计1000以内的所有完数。
我在编写的时候思路如下,首先是要对1至1000的每个数都进行检测,那么这就是第一个for循环
继续向下,我需要统计每个数的因数之和,一开始,我想到的用数组,将每一个数的因数统计在数组内,最后。再将数组内所有的因数求和以后,在进行比较。但是后来在数组编写的时候遇到了困难,始终无法达到我想要的结果,所以我最后放弃了这条思路。
最后,用sum和+=运算符,直接将所有的因数求和之后与原本的数相比较,最终得出一个勉强还行的程序
/************************************************/
/**** 函数功能:统计1000内的所有完数 *****/
/************************************************/
#include <stdio.h>
int main ()
{
int n = 0 ;
int m = 0;
int sum = 0; //定义sum统计因数之和
for(n = 1; n <= 1000; n++) //n遍取1-n
{
sum = 0; //在每次循环开始sum置零,进行新的循环
for(m = 1; m < n; m++) //m取遍<n的每个实数
{
if (n%m == 0)
{
sum += m; //sum为所有因数之和
}
}
if (sum == n)
{
printf("%d\n",n); //若该数为完数,将其输出
}
}
return 0;
}