#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int a[1000001];
unsigned long long modulo(unsigned long long a,unsigned long long b,unsigned long long c)
{ unsigned long long x=1,y=a;
while(b>0)
{ if(b&1)
x=(x*y)%c;
y=(y*y)%c;
b=b>>1;
}
return x%c;
}
unsigned long long mulmod(unsigned long long a,unsigned long long b,unsigned long long c)
{ unsigned long long x=0,y=a%c;
while(b>0)
{ if(b&1)
x=(x+y)%c;
y=(y*2)%c;
b=b>>1;
}
return x%c;
}
int Miller(unsigned long long p,int iteration)
{ if(p<2)
return 0;
if(p!=2&&p%2==0)
return 0;
unsigned long long s=p-1;
while(s%2==0)
s/=2;
for(int i=0;i<iteration;++i)
{ unsigned long long a=rand()%(p-1)+1,temp=s;
unsigned long long mod=modulo(a,temp,p);
while(temp!=p-1&&mod!=1&&mod!=p-1)
{ mod=mulmod(mod,mod,p);
temp*=2;
}
if(mod!=p-1&&temp%2==0)
return 0;
}
return 1;
}
int Fermat(unsigned long long p,int iterations)
{ if(p==1)
return 0;
for(int i=0;i<iterations;++i)
{ unsigned long long a=rand()%(p-1)+1;
if(modulo(a,p-1,p)!=1)
return 0;
}
return 1;
}
int main()
{ unsigned long long p;
int t;
unsigned int i,j;
for(i=2;i<=1000;++i)
for(j=i*i;j<=1000000;j=j+i)
a[j]=1;
scanf("%d",&t);
while(t--)
{ scanf("%llu",&p);
if(p<=1000000)
{ if(a[p]==0)
printf("YES\n");
else
printf("NO\n");
}
else if(Miller(p,100)&&Fermat(p,100))
printf("YES\n");
else
printf("NO\n");
}
return 0;
}