为何没有输出结果?

来源:百度知道 编辑:UC知道 时间:2024/05/29 01:52:05
6=1+2+3,其中1,2,3都是6的因子.这样的数被称为完数.要输出1000之内所有完数,我写了个程序,但运行不出正确结果.请诸位大侠指出错误,谢谢!
#include<stdio.h>
void main()
{
int m,i,s=0;
for(m=1;m<=1000;m++)
{
for(i=1;i<m;i++)
{
if(m%i==0)
s=s+i;
}
if(s==m)
printf("%d",m);
}
}

#include<stdio.h>
void main()
{
int m,i,s=0;
for(m=1;m<=1000;m++)
{ s=0;///////////////S记得要归0啊
for(i=1;i<m;i++)
{
if(m%i==0)
s=s+i;
}
if(s==m)
printf(" %d",m); /////////中间打几个空格
}
}

你的问题就是在第一个for循环,当 第二次循环时,s的值发生了变化。
#include<stdio.h>
void main()
{
int m,i,s=0;
for(m=1;m<=1000;m++)
{ s=0; /* 每次循环都要把s的值赋为0 */
for(i=1;i<m;i++)
{
if(m%i==0)
s=s+i;
}
if(s==m)
printf(" %d",m);
}
}