c语言函数调用和定义基础

我这样怎么输不出yes和no?貌似是函数的错误?

img

#include<stdio.h>
#include<math.h>
void prime(int n)
{
    int i;
    for(i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            break;
        }
        if(i<=sqrt(n))
            printf("Yes\n");
        else
            printf("No\n");
    }
}
int main()
{
    int N,i;
    scanf("%d",&N);
    int a[N];
    for(i=0;i<N;i++)
    {
            scanf("%d",&a[i]);
    }   
    for(i=0;i<N;i++)
    prime(a[i]);
    return 0;
}

改动处见注释,供参考:

#include<stdio.h>
#include<math.h>
void prime(int n)
{
    int i;
    for(i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            break;
        }
    } //修改
    if(i<=sqrt(n))
        printf("No\n"); //修改
    else
        printf("Yes\n");//修改
}
int main()
{
    int N,i;
    scanf("%d",&N);
    int a[100];
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<N;i++)
        prime(a[i]);
    return 0;
}

#include<stdio.h>
#include<math.h>
void prime(int n)
{
    int i;
    for(i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
        {
            break;
        }
    }
        if(i>sqrt(n))
            printf("Yes\n");
        else
            printf("No\n");
}
int main()
{
    int N,i;
    scanf("%d",&N);
    int a[N];
    for(i=0;i<N;i++)
    {
            scanf("%d",&a[i]);
    }   
    for(i=0;i<N;i++)
    prime(a[i]);
    return 0;
}