C语言一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。

时间:2024-03-29 18:41:07

这个比较简单,说一**意事项:
(1) if(s==i)//注意这个if语句的位置一定在第二个循环外面,否则的话就会多一个24,24不是完数;
(2)注意输出格式;

#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
int main()
{
    int i,j,s,b[100],k;
    for(i=2; i<=1000; i++)
    {
        b[100]= {0};
        s=0;
        k=0;
        for(j=1; j<i; j++)
        {
            if(i%j==0)
            {
                s+=j;
                b[k++]=j;
            }

        }
        if(s==i)//注意这个if语句的位置一定在第二个循环外面,否则的话就会多一个24
        {
            printf("%d its factors are %d",i,b[0]);
            for(int a=1; a<k; a++)
                printf(",%d",b[a]);
            printf("\n");
        }
    }
    return 0;
}

这个代码比较简单,不详细说明,不过我在此之前出了一个小问题,所以建议大家做题时候,写完代码最好搜一下看看运行结果是否有偏差。
运行结果:
C语言一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。