对素数判断不准确输出错误

问题遇到的现象和发生背景

输入一个数n(2<=n<=10^12),输出它是否是素数。如果是,输出Yes,否则输出No。

用代码块功能插入代码,请勿粘贴截图

#include
int main()
{
int n,i,flag=1;
while(1)
{
scanf("%d", &n);
if(n==1) flag=0;
for(i=2;i
{
if(n%i==0)
{
flag=0;
break;
}
}
if(flag)
printf("Yes\n");
else
printf("NO\n");
}
return 0;
}

运行结果及报错内容

第一个数永远是yes,等出no后一直是no

我的解答思路和尝试过的方法

使用while循环实现多组输入,使用for循环判断
调整判断位置

我想要达到的结果

并未成功