#include #define rep(i,s,n) for (int i = (int)(s); i < (int)(n); i++) #define all(v) begin(v),end(v) using namespace std; using ll = long long; bool chmin(auto &a, auto b){ return a > b ? a = b, 1 : 0; } bool chmax(auto &a, auto b){ return a < b ? a = b, 1 : 0; } void solve(){ ll a, b; cin >> a >> b; ll i = max(a, b); ll ans = 0; while (i > 0) { ll va = a / i; ll vb = b / i; ll ja = a / (va + 1); ll jb = b / (vb + 1); ll nxt = max(ja, jb); ll l = nxt+1; ll r = i+1; if (l + 1 == r) { ans += (a % l >= b % l); }else { assert (l + 2 <= r); ll base_a = a % l; ll base_b = b % l; ll sabun_a = a % (l+1) - a % l; ll sabun_b = b % (l+1) - b % l; ll last_a = a % (r-1); ll last_b = b % (r-1); if (base_a >= base_b && last_a >= last_b) { ans += r - l; }else if(base_a < base_b && last_a < last_b) { ans += 0; }else if(base_a < base_b && last_a >= last_b) { assert(sabun_a > sabun_b); ll p = (base_b - base_a + l * sabun_a - l * sabun_b + sabun_a - sabun_b - 1) / (sabun_a - sabun_b); assert(l < p && p < r); ans += r - p; }else{ assert(base_a >= base_b && last_a < last_b); assert(sabun_b > sabun_a); ll p = (base_a - base_b - l * sabun_a + l * sabun_b + 1 + sabun_b - sabun_a - 1) / (sabun_b - sabun_a); assert(l < p && p < r); ans += p - l; } } // [nxt+1, i+1) i = nxt; } cout << ans << '\n'; } int main(){ cin.tie(0)->sync_with_stdio(0); ll t; cin >> t; while(t--){ solve(); } }