c++入门之函数求完数问题

编写一个判断完数的函数。完数是指一个数恰好等于它的因子之和,如6=1+2+3,6就是完数。

img


要用函数解,如果不是完数就输出no


#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;
}