/** * @FileName a.cpp * @Author kanpurin * @Created 2020.08.29 16:05:53 **/ #include "bits/stdc++.h" using namespace std; typedef long long ll; template vector enum_div(T n) { vector ret; for (T i = 1; i * i <= n; ++i) { if (n % i == 0) { ret.push_back(i); if (i * i != n) { ret.push_back(n / i); } } } return ret; } int main() { int n;cin >> n; while(n--) { int x,y;scanf("%d %d",&x,&y); if (x == y) { ll ans = 0; ans += x - 1; ans += enum_div(x).size() - 1; if (x % 2 == 0) ans--; printf("%lld\n", ans); } else { if (x < y) swap(x,y); auto v1 = enum_div(x + y); sort(v1.begin(), v1.end()); auto v2 = enum_div(x - y); sort(v2.begin(), v2.end()); int t = 0; int ans = 0; for (int i = 0; i < v2.size(); i++) { while(t < v1.size() && v2[i] + 2 >= v1[t]) { if (v2[i] + 2 == v1[t]) { int a = v1[v1.size()-1] / v1[t]; int b = v2[v2.size()-1] / v2[i]; if (a > b && a % 2 == b % 2) ans++; } t++; } } printf("%d\n",ans); } } return 0; }