不知道这个错哪里了。

一个正整数的真因子是指导所有能整除它的正整数(不包括自身)。

一个正整数的所有真因子之和等于其本身则被称为完数。

例如:6=1+2+3,6是完数;

而9不是,1也不是。

求在[m,n]之间的完数的个数。
#include "stdio.h"
int main()
{
int m,n,i,j,sum,k=0;
scanf("%d %d",&m,&n);
for(i=m;i<=n;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
{
sum+=j;
}
if(sum==i)
{
k++;
}
}
}
printf("%d",k);
return 0;
}

修改如下,供对照参考:

#include "stdio.h"
int main()
{
   int m,n,i,j,sum,k=0;
   scanf("%d %d",&m,&n);
   for(i=m;i<=n;i++)
   {
     sum=0;
     for(j=1;j<i;j++)
     {
        if(i%j==0)
        {
           sum+=j;
        }
     }
     if(sum==i)
     {
        k++;
     }
   }
   printf("%d",k);
   return 0;
}

最后一个分号错了,换成英文的分号。