为什么会出现这种情况

img


img


如图,为什么会出现这样的错误,题目是连续输入整数n,若n为正整数,判断是否为素数,n小于0,判断-n是否为素数,输入0,结束输入。为什么还会判断0


#include<stdio.h>
#include<math.h>
int main()
{
    int n,a,b,c;
    scanf("%d",&n);
    a=sqrt(n+1);//利用合数必然有一个大于平方根和一个小于平方根或相等的两个因数相乘得到。
    for(b=2;b<=a;b++)//循环筛选能被1和该数的平方根之间的因数整除。
       {
           if(n%b==0)
            break;//说明该数必为合数
       }
        if(b<=a||n==1)//如果1到n的平方根之间有一个数能整除,则不是素数;由于定义了n为整形,1在上边循环体输出是0的类型。这里排除它。
            printf("No\n");
        else//1到n的平方根之间不存在一个数能整除,则为素数
            printf("Yes\n");
    return 0;
}