PTA判断素数,输入两个数据,结果正确,但输入三个就错误,为什么?

#include
#include
int main()
{
int N;

int a[]={0};


    int D=0;
scanf("%d\n",&N);
for(int i=0;iscanf("%d",&a[i]);
}

//
for(int i=0;i

      for (int j=2;j<=sqrt(a[i]);j++)
   {  
    if(a[i]%j==0){
        D=1;
        break;     
    }
                    
   }
   if(D==1)
   printf("No\n");
   else
   printf("Yes\n");

}

return 0;

}

int a[]={0}; 不能动态申请数组,你可以写一个大数组,int a[100]={0};
每次循环数组的时候,把你的标志D置为0,否则,只要有一个是素数,后面都是素数了。
for(int i=0;i<N;i++)
{
D=0;//添加一下标志重置
for (int j=2;j<=sqrt(a[i]);j++)