Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<cstdio>
- #include<bitset>
- #include <cmath>
- #define BM 1000005
- using namespace std;
- int pr[BM],dim;
- bitset <BM> a;
- void ciur(){
- long long i,j;
- for(i=2;i<=BM-5;++i)if(a[i]==0)for(j=i*i;j<=BM-5;j+=i)a[j]=1;
- a[1]=1;
- for(i=2;i<=BM-5;++i)if(a[i]==0)pr[++dim]=i;
- }
- int desc(int x){
- int i;
- for(i=1;i<=dim&&pr[i]*pr[i]<=x;++i)if(x%pr[i]==0&&x!=pr[i]){
- return 0;
- }
- return 1;
- }
- int main () {
- int n,i;
- long long nr;
- scanf("%d",&n);
- ciur();
- for(i=1;i<=n;++i){
- scanf("%I64d",&nr);
- double rad=sqrt((double)(nr));
- int aprox=rad;
- if(rad!=aprox||nr==1)printf("NO\n");
- else{
- if(desc(aprox))printf("YES\n");
- else printf("NO\n");
- }
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment