一个数如果除了它本身的所有因数相加会等于它本身,就称这个数为完数。
只要用相模的方法,就能找到一个数的因数再将其累加到一个变量中,再判断最终这个变量的值是否等于这个数,便能判断这个数是否是完数。
如代码所示:
#include <stdio.h>
int main()
{
int i, j, k, s = 0;
scanf("%d", &i);
for (k = 2; k <= i; k++)
{
s = 0;
for (j = 1; j < k; j++)
{
if (k % j == 0)
{
s += j;
}
}
if (s == k)
{
printf("%12d", k);
}
}
return 0;
}
外循环的k是代表想判断的数字,1肯定不是完数,如果外循环从1开始,内循环就无法启动,所以外循环可以直接从2开始。
内循环j < k,刚刚好不会将要判断的数本身累加进去。