为什么会出现这样的错误

img


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

修改如下,供参考:

#include <stdio.h>
int main()
{
    int n, i, k;
    while (1) {
        scanf("%d", &n);
        k = n;
        if (n < 0)
            n = -n;
        if (n == 0) break;
        for (i = 2; i < n; i++)
            if (n % i == 0)
                break;
        if (i == n)
            printf("%d 是素数\n", k);
        else
            printf("%d 非素数\n", k);
    }
    return 0;
}

用for()这么写,供参考:

#include <stdio.h>
int main()
{
    int n, i, k;
    for (; scanf("%d", &n) && n != 0;) 
    {
        k = n;
        if (n < 0)
            n = -n;
        for (i = 2; i < n; i++)
            if (n % i == 0)
                break;
        if (i == n)
            printf("%d 是素数\n", k);
        else
            printf("%d 非素数\n", k);
    }
    return 0;
}