#pragma GCC optimize ("O2")
#pragma GCC target ("avx2")
#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
#define rep(i, n) for(int i = 0; i < (n); i++)
#define rep1(i, n) for(int i = 1; i <= (n); i++)
#define co(x) cout << (x) << "\n"
#define cosp(x) cout << (x) << " "
#define ce(x) cerr << (x) << "\n"
#define cesp(x) cerr << (x) << " "
#define pb push_back
#define mp make_pair
#define chmin(x, y) x = min(x, y)
#define chmax(x, y) x = max(x, y)
#define Would
#define you
#define please

int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);


	int S;
	cin >> S;

	rep(s, S) {
		int X, Y;
		cin >> X >> Y;

		if (X == Y) {
			int kotae = X;
			int are = sqrt(X);
			rep1(i, are) {
				if (X % i == 0) {
					int j = X / i;

					if (i > 2) kotae++;
					if (i != j && j > 2) kotae++;
				}
			}
			co(kotae);
		}
		else {
			if (X < Y) swap(X, Y);

			int XY = X - Y;
			int kotae = 0;
			int are = sqrt(XY);
			rep1(i, are) {
				if (XY % i == 0) {
					int j = XY / i;

					if ((X + Y) % (i + 2) == 0) {
						int tmp = (X + Y) / (i + 2);
						if(tmp > j && (tmp - j) % 2 == 0) kotae++;
					}
					if (i != j && (X + Y) % (j + 2) == 0) {
						int tmp = (X + Y) / (j + 2);
						if (tmp > i && (tmp - i) % 2 == 0) kotae++;
					}
				}
			}
			co(kotae);
		}





	}




	Would you please return 0;
}