c语言编程求2到2015之间所有完数之和,求大神帮忙看看哪里有问题

2025-03-22 00:55:55
推荐回答(3个)
回答1:

思路:所谓完数就是除了自身所有因数的和等于本身,对于每一个数都需要计算所有的因数和,最后再判断。

参考代码:

#include"stdio.h"
int main()
{
    long sum;
    int a,b,c;
    sum=0;
    for(a=2; a<2016; a++)
    {//对每一个数都需要进行判断,需要{} 
        c=0;    
        for(b=1; b        {
            if(a%b==0)
                c+=b;
        }
        if(a==c)   //所有因数和是否等于自身 
sum+=a;
    }
    printf("%d\n", sum);  //输出格式  
}
/*
输出: 
530
*/

回答2:

#include 
main()
{
    long sum;
    int a,b,c;
    sum=0;
    for(a=2; a<2016; a++)
    {
        c=0;    /*每检查一个a,都要把c初始化为0*/
        for(b=1; b        {
            if(a%b==0)
                c+=b;
        }
        if(a==c)    /*这个判断应该是外层for循环的一部分,所以外层for循环要用{}扩起来*/
            sum+=a;
    }
    printf("sum = %d\n", sum);    /*最后输出少格式化字符串*/
}

回答3:

#include
int main()
{
long sum;
int a,b,c;

sum=0;
for(a=2;a<2016;a++)
{
c=0;//判断每一个数的因子之和,要把前面一个数的因子之和的值清除
for(b=1;b if(a%b==0)
c+=b;
if(a==c)
{
sum+=c;
// printf("%d\n",c);
}
}//你的每一个循环到c+=b就结束了,明显不对,应该包括到完数的判断
printf("%d\n",sum);//打印函数这样用的
return 0;
}