AcWing 4874. 约数
原题链接
中等
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
const int N=1000010;
bool st[N];
int p[N];
void fun(){
int k=0;
st[1]=true;
for(int i=2;i<=1000000;i++){
if(!st[i])p[k++]=i;
for(int j=0;p[j]<=1000000/i;j++){
st[p[j]*i]=true;
if(i%p[j]==0)break;
}
}
}
int main(){
int n;
scanf("%d",&n);
fun();
while(n--){
ll x;
scanf("%lld",&x);
ll t=sqrt(x);
if(t*t==x&&!st[t])
printf("YES\n");
else printf("NO\n");
}
return 0;
}