用C语言求200与500间的完数之和

#include<stdio.h>
void main()
{
int i,m=0,n,p=0;
for(i=200;i<=500;i++)
{ m=0;
for(n=1;n<=i;n++)
if (i%n==0) m=m+n;
printf("%d\n",m);
if(m==i) p=i+p;

}
printf("%d\n",p);
搞不懂为什么输出来总是0?求帮助啊!!!

第1个回答  2012-08-06
for(n=1;n<=i;n++)这句条件写错了,要写成
for(n=1;n<i;n++),如果让你连i也算进去,那至少1和i是肯定能整除的,所以m至少=1+i,永远不可能==i,而且这也不符合完数的规则。本回答被提问者和网友采纳
第2个回答  2012-08-06
if(m==i) p=i+p;
这句话 在你程序里面永远不会执行
p的值永远是初始化的值"0".追问

为什么呢?

第3个回答  2012-08-06
=。=有错么=。=真心没看出来啊=。=不如你在循环最后输出下P看看有没有值啊
相似回答