求大神,小弟我不清楚什么地方错了,题目(求1000以内的所有完数。所谓完数,是指一个数恰好等于它的所有因子之和。例如,因为6=1+2+3,所以6为完数

求大神,我不清楚什么地方错了,题目(求1000以内的所有完数。所谓完数,是指一个数恰好等于它的所有因子之和。例如,因为6=1+2+3,所以6为完数。
int main()
{ int a=0,x=2,m=1;
for (;x<=1000;x+=1)
{while (m<x)
{if (x%m==0) a+=m;
m+=1;
}
if (x==a) cout<<x<<"为完数"<<endl;

}
return 0;
}

------解决思路----------------------
每次循环一个新的x,m和a都需要重置
{m=1; a=0;while (m<x)
------解决思路----------------------
是的,如楼上,每次for循环都是一次新的计算,要清零