#include #include #include #include #include #include #include #include #include #include #define mkp make_pair #define mkt make_tuple #define rep(i,n) for(int i = 0; i < (n); ++i) #define all(v) v.begin(),v.end() using namespace std; typedef long long ll; const ll MOD=1e9+7; template void chmin(T &a,const T &b){if(a>b) a=b;} template void chmax(T &a,const T &b){if(a factorize(int X){ vector res; for(int i=1;i*i<=X;i++){ if(X%i==0){ res.push_back(i); if(i!=X/i) res.push_back(X/i); } } return res; } void solve(){ int X,Y; cin>>X>>Y; if(X>Y) swap(X,Y); ll A=X+Y; ll B=Y-X; vector P=factorize(A); vector Q=factorize(B); map mp; rep(i,Q.size()) mp[Q[i]]=1; ll ans=0; for(auto p:P){ if(p<=2) continue; int q=p-2; if(mp.count(q)==false) continue; int a=A/p; int b=B/q; if(a<=b) continue; int N=a-b; if(N%2) continue; ans++; } cout<>T; rep(i,T) solve(); return 0; }