c语言 求1—1000所有完数并求和 下边的程序哪里错了

#include<stdio.h>
int main(void)
{
int i,j,k,sum=0;
for(i=2;i<1000;i++)
{k=0;
for(j=1;j<=i/2;j++)
{if(i%j==0)
k=k+j;
}
if(k==i)
sum=sum+i;
printf("%d\n",sum);
return 0;
}
}
数 可以找出来 主要是求和

#include <stdio.h>

int main()

{  int n=1000;

   int r,j,i;

   for(i=1;i<n; i++)

   {

     r = 0;

     for(j=1;j<i;j++)

     {

        if(i%j == 0)

        {

          r = r + j; 

          }

         }

      if(r == i)

      {

       printf("the result is:%d\n",r);

       }

      

        }

        

        return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-24
你的错误是 if(k==i) 这一句,将除尽的数加起来判断是否只能被1除尽
应改为 if (k==1)
下面的代码也行
#include<stdio.h>
void main(void)
{
int sum=2;
for(int i=3;i<1000;i++)
{
for(int j=2;j<=i/2;j++)
{
if(i%j==0)
break;
else
sum=sum+i;
}
printf("%d\n",sum);
}
}
第2个回答  2011-10-24
正解
#include <stdio.h>
int main()
{ int n=1000;
int r,j,i;
for(i=1;i<n; i++)
{
r = 0;
for(j=1;j<i;j++)
{
if(i%j == 0)
{
r = r + j;
}
}
if(r == i)
{
printf("the result is:%d\n",r);
}

}

return 0;
}
相似回答