看一下我的一个c的程序,哪里错了?????谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:45:24
#include<stdio.h>
void main()
{int i,j,sum,t; sum=0;
for(i=1;i<=1000;i++)
{
for(j=1;j<=i-1;j++)
{ if(i%j==0)
sum=sum+j;

}
if(sum==i)
printf("%d\n",i);

}
}

这是求完数的程序,完数就是该数等于其因子之和。如6的因子有1,2,3.
6=1+2+3.

谢谢指导

你在循环里面没有给sum赋值为0,修改如下:

#include<stdio.h>
void main()
{int i,j,sum,t;
for(i=1;i<=1000;i++)
{
sum=0;
for(j=1;j<=i-1;j++) if(i%j==0) sum=sum+j;
if(sum==i) printf("%d\n",i);
}
}

#include<stdio.h>
void main()
{int i,j,sum,t; sum=0; //sum赋值不应在此,否则以后几次运算sum将于前一个循环留下的sum累加
for(i=1;i<=1000;i++)
{ //应在此定义sum=0;
for(j=1;j<=i-1;j++)
{ if(i%j==0)
sum=sum+j;

}
if(sum==i)
printf("%d\n",i);

}
}