#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
int data, a, b, temp;
cin >> data;
for (int i = 0; i < data; ++i)
{
cin >> a >> b;
if(a==b)
{
int counter = 2;
//jeśli bok jest kwadratem, dziel go kolejno przez: 2, 3, 4 ...
// i sprawdź czy będzie podzielny na jak największy kwadrat
while(b%(a/counter)!=0)
counter++;
a = a/counter;
}
else
{
// w przeciwnym wypadku obliczaj NWD modulo aż do 0.
while (b!=0)
{
temp = b;
b = a%b;
a = temp;
}
}
cout << a << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKewogICAgaW50IGRhdGEsIGEsIGIsIHRlbXA7CiAgICBjaW4gPj4gZGF0YTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGRhdGE7ICsraSkKICAgIHsKICAgICAgICBjaW4gPj4gYSA+PiBiOwogICAgICAgIGlmKGE9PWIpCiAgICAgICAgewogICAgICAgICAgICBpbnQgY291bnRlciA9IDI7CiAgICAgICAgICAgIC8vamXFm2xpIGJvayBqZXN0IGt3YWRyYXRlbSwgZHppZWwgZ28ga29sZWpubyBwcnplejogMiwgMywgNCAuLi4KICAgICAgICAgICAgLy8gaSBzcHJhd2TFuiBjenkgYsSZZHppZSBwb2R6aWVsbnkgbmEgamFrIG5handpxJlrc3p5IGt3YWRyYXQKICAgICAgICAgICAgd2hpbGUoYiUoYS9jb3VudGVyKSE9MCkKICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAgICAgICAgYSA9IGEvY291bnRlcjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgLy8gdyBwcnplY2l3bnltIHd5cGFka3Ugb2JsaWN6YWogTldEIG1vZHVsbyBhxbwgZG8gMC4KICAgICAgICAgICAgd2hpbGUgKGIhPTApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRlbXAgPSBiOwogICAgICAgICAgICAgICAgYiA9IGElYjsKICAgICAgICAgICAgICAgIGEgPSB0ZW1wOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgYSA8PCBlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0=