C语言 /*输出2-500所有的素数,并且每行输出10个*/ 不知道在两处各自写flag=1 为什么结果不同

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
/*输出2-500所有的素数,并且每行输出10个*/
#include<stdio.h>
int main()
{
    int n,i,flag,count=0;              //为什么在这一行写flag=1,运行不出想要的结果
    for(n=2;n<=500;n++)
    {
        for(i=2,flag=1;i<n;i++)          //为什么要在这一行写flag=1
            if(n%i==0)
                flag=0;
        if(flag==1)
        {
            printf("%5d",n);
            count++;
            if(count%10==0)
                printf("\n");
        }
    }
    return 0;
}

运行结果及报错内容

如果写int flag=1 运行结果是2 3
若写在第二个for循环内 则是想要结果

我的解答思路和尝试过的方法
我想要达到的结果

想知道这是什么原因

因为你每次循环都要有一个初始化为1