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


#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; // x == p
        }
    }
    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));
    }
    return 0;
}