/* -*- coding: utf-8 -*- * * 2767.cc: No.2767 Add to Divide - yukicoder */ #include #include using namespace std; /* constant */ const int INF = 1 << 30; /* typedef */ /* global variables */ /* subroutines */ /* main */ int main() { int tn; scanf("%d", &tn); while (tn--) { int a, b; scanf("%d%d", &a, &b); if (b % a == 0) puts("0"); else { // b+x=k(a+x) [k>=2,x>0] -> b-a=k(a+x)-a-x=(k-1)(a+x) int minx = INF, d = b - a; for (int p = 1; p * p <= d; p++) if (d % p == 0) { int q = d / p; if (p >= a) minx = min(minx, p - a); if (q >= a) minx = min(minx, q - a); } printf("%d\n", (minx < INF) ? minx : -1); } } return 0; }