编写一个判断完数的函数。完数是指一个数恰好等于它的因子之和,如6=1+2+3,6就是完数。
要用函数解,如果不是完数就输出no
编写一个判断完数的函数。完数是指一个数恰好等于它的因子之和,如6=1+2+3,6就是完数。
#include"stdio.h"
int main()
{
//编程求完数
//完数就是一个数恰好等于它的因子之和 例如:6=1+2+3
//一个数的因子的个数是有限的.最小的因子是1,最大的因子是它本身.
int i, j,sum=0;//sum的值要初始化一下,因为在内层循环的第一次用的时候没有初始化,编译器会报错
for (i = 1; i <= 1000; i++)
{
sum = 0;//这个sum的初始化值很重要,因为sum是累加功能,每次循环后都会有值,所以要初始化一下
//sum初始化这个地方最容易出错
for (j = 1; j <= i / 2; j++)//i除以2的原因是:比如6,6的因子除了本身之外不可能大于他的一半
{//另外除以2也是相当于除去它本身,比如:6=1+2+3中就没有6
if (i%j == 0)
{
sum = sum + j;//j从1开始,也就是+1的原因是每个数都至少有一个因子1
}
}
if (sum == i)//判断
{
printf("%d的因子:", i);
//输出它的因子
for (j = 1; j <= i / 2; j++)
{
if (i%j == 0)
{
printf("%d ", j);
}
}
printf("\n");
}
}
return 0;
}