思路:所谓完数就是除了自身所有因数的和等于本身,对于每一个数都需要计算所有的因数和,最后再判断。
参考代码:
#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
*/
#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); /*最后输出少格式化字符串*/
}
#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;
}