21、求解从2~20000的所有完数,所有因数的和等于本身的数称为完数

/*
求解从2~20000的所有完数,所有因数的和等于本身的数称为完数
6:1 2 3
28:1 2 4 7 14
*/
#include <stdio.h>
#include <stdlib.h>

void isPerfectNum(int num)
{
    int sum = 0;
    for(int i = 1;i < num;i++)//穷举num的每一个因数
    {
        if(0 == num % i)
            sum += i;
    }
    if(sum == num)//num与因数和相等,则为完数
    {
        printf("%d\n",num);
    }
}
void getPerfectNum(int getNum)
{
//    int getNum;
//    scanf("%d\n",getNum);
//    for(int num = 2;num <= getNum;num++)
//    {
//        isPerfectNum(num);
//    }
    for(int num = 2;num <= getNum;num++)
    {
        isPerfectNum(num);
    }
}
int main()
{
    int getNum;
    scanf("%d",&getNum);
    getPerfectNum(getNum);
    return 0;
}
posted @ 2021-09-22 21:41  叶梓渔  阅读(166)  评论(0)    收藏  举报