#include <iostream>
#include <vector>
int nwd( int a , int b );
int main()
{
int number_a = 0 , number_b = 0 , how_many_steps = 0 , result = 0 ;
std::cin >> how_many_steps ;
while (how_many_steps > 0)
{
--how_many_steps;
std::cin >> number_a >> number_b;
if ( number_a != 0 && number_b != 0 )
{
result = nwd( number_a , number_b );
std::cout << result << std::endl;
}
}
return 0;
}
int nwd ( int a , int b )
{
std::vector <int> divisor_number_c;
std::vector <int> divisor_number_d;
int final_count = 1;
int number_c = 0 , number_d = 0 ;
number_c = a ;
number_d = b ;
if ( a == 1 || b == 1 )
{
return 1;
}
else if ( a > 1 && b > 1 )
{
while ( number_c != 1 )
{
if ( number_c % 2 == 0 )
{
number_c /= 2;
divisor_number_c.push_back(2);
}
else if ( number_c % 3 == 0 )
{
number_c /= 3;
divisor_number_c.push_back(3);
}
else if ( number_c % 5 == 0 )
{
number_c /= 5;
divisor_number_c.push_back(5);
}
else if ( number_c % 7 == 0 )
{
number_c /= 7;
divisor_number_c.push_back(7);
}
else if ( number_c % number_c == 0 )
{
divisor_number_c.push_back(number_c);
number_c /= number_c ;
}
}
while ( number_d != 1 )
{
if ( number_d % 2 == 0 )
{
number_d /= 2;
divisor_number_d.push_back(2);
}
else if ( number_d % 3 == 0 )
{
number_d /= 3;
divisor_number_d.push_back(3);
}
else if ( number_d % 5 == 0 )
{
number_d /= 5;
divisor_number_d.push_back(5);
}
else if ( number_d % 7 == 0 )
{
number_d /= 7;
divisor_number_d.push_back(7);
}
else if ( number_d % number_d == 0 )
{
divisor_number_d.push_back(number_d);
number_d /= number_d ;
}
}
for ( int i = 0 ; i < divisor_number_c.size() ; ++i)
{
int index = 0 ;
for ( int j = 0 ; j < divisor_number_d.size() ; ++j)
{
if ( divisor_number_c[i] == divisor_number_d[j] && index == 0)
{
divisor_number_d.erase(divisor_number_d.begin()+j);
final_count *= divisor_number_c[i];
++index;
}
}
}
return final_count;
}
}