#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define repr(i, a, b) for (int i = (int)(a); i < (int)(b); i++) #define rep(i, n) repr(i, 0, n) #define INF 2e9 #define MOD 1000000007 //#define MOD 998244353 #define LINF (long long)4e18 #define jck 3.141592 const double EPS = 1e-10; using ll = long long; using Pi = pair; using Pl = pair; std::vector IsPrime; void sieve(size_t max){ if(max+1 > IsPrime.size()){ // resizeで要素数が減らないように IsPrime.resize(max+1,true); // IsPrimeに必要な要素数を確保 } IsPrime[0] = false; // 0は素数ではない IsPrime[1] = false; // 1は素数ではない for(size_t i=2; i*i<=max; ++i) // 0からsqrt(max)まで調べる if(IsPrime[i]) // iが素数ならば for(size_t j=2; i*j<=max; ++j) // (max以下の)iの倍数は IsPrime[i*j] = false; // 素数ではない } int main(){ int t; cin >> t; sieve(5000005); while(t--){ ll a; cin >> a; int p; cin >> p; if(!IsPrime[p]) cout << -1 << endl; else{ if(a % p == 0) cout << 0 << endl; else cout << 1 << endl; } } }