func_code_string: #include <bits/stdc++.h>   using namespace std;   long long int _seive_size;   bitset<1000000> bs;   vector<long long int> primes;   void seive(long long int upperbound) {     _seive_size = upperbound + 1;     bs.set();     bs[0] = bs[1] = 0;     for (long long int i = 2; i <= _seive_size; i++) {       if (bs[i]) {         for (long long int j = i * i; j <= _seive_size; j += i) {           bs[j] = 0;         }         primes.push_back((int)i);       }     }   }   bool isTrime(long long int N) {     long long int temp;     long long int start = 0;     long long int end = primes.size() - 1;     while (start <= end) {       long long int mid = start + (end - start) / 2;       temp = primes[mid] * primes[mid];       if (temp == N) {         return true;       } else if (temp < N) {         start = mid + 1;       } else {         end = mid - 1;       }     }     return false;   }   int main() {     seive(1000000);     long long int n;     cin >> n;     long long int arr[n];     for (int i = 0; i < n; i++) {       cin >> arr[i];     }     for (int i = 0; i < n; i++) {       if (isTrime(arr[i])) {         cout <<  YES  << endl;       } else {         cout <<  NO  << endl;       }     }     return 0;   }   