#include <bits/stdc++.h>
using namespace std;
const int N = 1e7 + 3;
bool np[N];
int p[N / 10], c, q, xi, yi;
void it(int n) {
for (int i = 2; i <= n; ++i) {
if (!np[i])
p[++c] = i;
for (int j = 1; j <= c && i * p[j] <= n; ++j) {
np[i * p[j]] = 1;
if (!(i % p[j]))
break;
}
}
}
int f(int x) {
if (!np[x])
return 1;
if (x == 1)
return 1;
int l = 1, xn = x, minn = 1e7 + 3;
while (x % p[l] != 0) l++;
minn = min(minn, l);
return xn / p[minn];
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> q;
it(10000005);
for (int i = 1; i <= q; i++) {
cin >> xi >> yi;
if (xi < yi)
swap(xi, yi);
while (xi != yi) {
while (xi > yi) xi = f(xi);
if (xi == yi)
break;
yi = f(yi);
}
cout << xi << '\n';
}
}