为什么这样不能判断一个素数

#include<stdio.h>
int main()
{
int N;
scanf("%d",&N);
if(N<2)
{
printf("%d is not a prime.",N);
}
if(N>=2)
{
int i=2;
for(i=2;i<N;i++)
{
if(N%i==0)
{
printf("%d is not a prime.",N);
}
}
if(i==N)
{
printf("%d is a prime.",N);
}
}
return 0;
}
最后显示的是较小的数和较大的数的答案错误

img


img


img


img

**

img

img

img


img

修改如下,供参考:

#include <stdio.h>
int main()
{
    int N,i;  //修改
    scanf("%d",&N);
    if(N<2)
    {
        printf("%d is not a prime.",N);
    }
    else  //if(N>=2)
    {
        for(i=2;i<N;i++)
        {
            if(N%i==0)
            {
                printf("%d is not a prime.",N);
                break;  //修改
            }
        }
        if(i==N)
        {
            printf("%d is a prime.",N);
        }
    }
    return 0;
}

img


为什么要让i==N呢?上面那个N%i==0,就说明N能被i整除,不是素数,既然不是素数,就没必要继续循环下去了,直接break结束循环。
然后价格else printf(“%d is a prime”,N)就行了