请帮我看看这个错在哪里了。

素数是指除了1和本身之外没有因子的正整数(比如,11是素数,15不是素数,2是素数,1不是素数)。

计算[m,n]之间有多少个素数(m,n都是正整数,且保证m<=n,读者无需考虑)。

注意:不要有额外的输出信息!

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


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

每次循环做完要把sum清0 不然sum一直累加


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

img