素数判定(C语言),不知道哪里出问题了

素数判定,提交后显示错误,不知道哪里有问题。请帮忙看看,谢谢啦!

img

img

一、14行的输出函数写错位置了,这样会导致任何一个不是n的因子的数都被判定成功,然后输出yes。你应该在整个循环遍历结束之后,在去做判断看是否输出yes。
二、第13行的break写错了,这样会导致break一定运行,你应该放在if里面。

具体程序见下:

#include<stdio.h>
int main()
{
    int n,i,a;
    scanf("%d",&n);
    if(n==1)printf("No");
    a=1;//默认其是一个素数,如果不是a的值为0 
    for(i=2;i*i<=n;i++)
    {
        if(n%i==0){
            a=0;
            printf("No");
            break;
        }
    } 
    if(a==1){
        printf("Yes");
    }
    return 0;
 } 


int main()
{
    int n,i;
    scanf("%d",&n);
    for(i=2;i<n;i++)
    {
        if(n%i==0)
        {
            printf("No");
            break;
        }
    }
    if(i>=n)
        printf("Yes");
        
    return 0;
}

逻辑问题,你用相除判断法就必须全部尝试完后才能判断是否为素数


#include<stdio.h>
int main()
{
    int n,i,a;
    scanf("%d",&n);
    if(n==1)printf("No");
    a=1;//默认其是一个素数,如果不是a的值为0 
    for(i=2;i*i<=n;i++)
    {
        if(n%i==0){
            a=0;
            printf("No");
            break;
        }
    } 
    if(a==1){
        printf("Yes");
    }
    return 0;
 }