为什么改成第二种结果会出错


//求m,n之间的素数个数和这些素数的和 
#include <stdio.h>
#include <stdbool.h> 
int nums(int x)
{
    int i = 2;
    if(x ==1 )
    {
        return 0;
    }
    while( i<x )
    {
        if(x%i == 0)
        {
            return 0;
        }
        i++;
    }
    return 1;
}
int main()
{
    int m,n;
    int j;
    scanf("%d %d", &m, &n);
    int count = 0;
    int sum = 0;
    for(j=m; j<=n; j++)
    {
        if(nums(j) == 1)
        {
            count++;
            sum += j;
        }
    }
    printf("%d %d", count, sum);
    
    return 0;
}

上面这种输入 10 31后 会输出 7 143
改动主函数中for循环的条件变成下面这样

//求m,n之间的素数个数和这些素数的和 
#include <stdio.h>
#include <stdbool.h> 
int nums(int x)
{
    int i = 2;
    if(x ==1 )
    {
        return 0;
    }
    while( i<x )
    {
        if(x%i == 0)
        {
            return 0;
        }
        i++;
    }
    return 1;
}
int main()
{
    int m,n;
    int j;
    scanf("%d %d", &m, &n);
    int count = 0;
    int sum = 0;
    for(;m<=j && j<=n; j++)
    {
        if(nums(j) == 1)
        {
            count++;
            sum += j;
        }
    }
    printf("%d %d", count, sum);
    
    return 0;
}

其他都没有变,除了把for(j=m; j<=n; j++)改成了for(;m<=j && j<=n; j++)
还是输入10 31,为什么输出0 0?