from math import isqrt for _ in range(int(input())): A, B = map(int, input().split()) change = set() # 変化する点を記録する (重複削除のためset) for d in range(1, isqrt(A) + 1): change.add(d) change.add(A // d) for d in range(1, isqrt(B) + 1): change.add(d) change.add(B // d) change = list(change) change.sort(reverse = True) # 降順ソート N = len(change) change.append(0) # 番兵 ans = 0 for i in range(N): fa, fb = A % change[i], B % change[i] # 初項 da, db = A // change[i], B // change[i] # 公差 l = change[i] - change[i + 1] # 打ち切り限界 # 一次式の不等式を解く # x項目(0-indexed)について、 # fa + da*x >= fb + db * x # (da-db)x >= fb-fa # x <= (fb-fa)/(da-db) (B > A より、da >= db) # x <= (fa-fb)/(db-da) (db-daで割ることによって、正整数の除算にする) # ゼロ除算を防止 if da == db: if fa >= fb: ans += l # 逆転せず A >= B が続く continue # 答えが負になるので、初めから負けているから、足さない if fa < fb: continue x = (fa - fb) // (db - da) # 0-indexed で +1 するのと、打ち切るので min ans += min(l, x + 1) print(ans)