Загрузка данных


#include <iostream>
#include <vector>
#include "zablib.h"

using namespace std;

vector<int> getPrimes(int limit) {
    if(limit < 2) limit = 2;
    vector<bool> is_prime(limit + 1, true);
    is_prime[0] = is_prime[1] = false;
    for(long long p = 2; p * p <= limit; p++) {
        if(is_prime[p]) {
            for(long long i = p * p; i <= limit; i += p)
                is_prime[i] = false;
        }
    }
    vector<int> primes;
    for(int p = 2; p <= limit; p++)
        if(is_prime[p]) primes.push_back(p);
    return primes;
}

bool isHiddenPrime(int n, vector<int>& primes) {
    for(int p : primes) {
        if((long long)p * p > n) break;

        if(czy_podzielna(p)) {
            for(int q : primes) {
                if(q < p) continue;
                if((long long)p * q > n) break;
                if(czy_podzielna(p * q)) return false;
            }
            return true;
        }
    }
    return true;
}

int main()
{
    int n = daj_n();
    int t = daj_t();

    vector<int> primes = getPrimes(n / 2 + 1);

    for(int i = 0; i < t; i++) {
        odpowiedz(isHiddenPrime(n, primes));
    }
}