i是m-1,怎么能等于m呢?

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

逻辑上有点问题, m=2  k = m - 1 = 1,   i=2      i <= k   也就是i<=1  不成立就进不去for(i=2;i<=k;i++) 循环 也就可以得到 i= m = 2

举个简单的例子,假设输入3

(1)第一层循环 m=2,进去k=1,第二层循环i是从2开始,又i<=k,进不去第二层循环,此时if(i==m)成立,输出2

(2)第一层 第2次 循环 m=3,进去k=2,第二层循环i是从2开始,进第二层循环,if(m%i==0)不成立,i++,i=3,第二层循环结束,此时if(i==m)成立,输出3

第一个for循环改成那个i<=m可以吗

改成m就不会输出啦

解释一下呗