一个很小的问题,不知道咋理解,高手教教啊
# include <stdio.h>
int main()
{
int i,j,sum;
for (i=2;i<=1000;i++)
{
sum=0;
for(j=1;j<i;j++) // 求因子
{
if(i%j==0)
sum+=j;
}
if (sum==i)
{
printf("It is a perfect n: %d\n",i);
}
}
}
为什么那个sum要在循环里面赋值,而在外面不得呢:求解释;
[解决办法]
因为你是每次循环都得重新初始化sum,如果在外面赋值,下次的循环会保存上次循环的值。
[解决办法]
在里面赋值,是因为每次循环都需要把sum清0.
如果放到for的外面,不就不是每次都清0,而是一直累加了
[解决办法]
就是清零咯
对于程序,你可以从头运算一边,这样容易比较出差别,,对于其他问题也是这么解决
[解决办法]
每次运算都对sum进行了清零。因为你是对i从2到1000分别输出。要放外面了,则是i从2到1000累加。
[解决办法]
哥们自己手动跑一遍程序不就好了! 加油!青年!。。