import java.io.*;
import java.util.*;
class COMDIV
{
public static void main
(String args
[]) {
int t
=Integer.
parseInt(br.
readLine()); boolean isPrime[]=new boolean[1000+4];
int primes[]=new int[1000+4];//this will store the nth prime. in consecutive order
int p_idx=0;
Arrays.
fill(isPrime,
true);//initially assume that all are prime isPrime[0]=isPrime[1]=false;
for(int i=2;i*i<=1002;i++)
{
if(isPrime[i])
{
primes[p_idx++]=i;
for(int j=i;i*j<=1002;j++)
isPrime[i*j]=false;
}
}
while(t--!=0)
{
String in
[]=br.
readLine().
split(" "); int g=gcd(a,b);
if(g==1)
{
continue;
}
else
{
//all divisors of g and (common divisors of both (A&B)) are the same. its the same list
//therefore the required no of divisors common to both a and b are the number of divisors of g.
long prod=1;
int i=0;
while(primes[i]*primes[i]<=g) // && i<p_idx++
{
if(isPrime[primes[i]])
{
int c=0;
while(g%primes[i]==0)
{
g/=primes[i];
c++;
}
prod=prod*(++c);
}
i++;
}
if(g>1)
prod<<=1;
}
}//t
out.flush();
out.close();
}
static int gcd(int a ,int b)
{
if(b==0)
return a;
else
return gcd(b,a%b);
}
}
/** Faster input **/
{
final private int BUFFER_SIZE = 1 << 16;
private byte[] buffer;
private int bufferPointer, bytesRead;
{
buffer = new byte[BUFFER_SIZE];
bufferPointer = bytesRead = 0;
}
{
buffer = new byte[BUFFER_SIZE];
bufferPointer = bytesRead = 0;
}
{
byte[] buf = new byte[64]; // line length
int cnt = 0, c;
while( (c=read()) != -1) {
buf[cnt++] = (byte)c;
if(c == '\n') break;
}
}
{
int ret = 0;
byte c = read();
while (c <= ' ') c = read();
boolean neg = c == '-';
if (neg) c = read();
do {
ret = ret * 10 + c - '0';
c = read();
} while (c >= '0' && c <= '9');
if (neg) return -ret;
return ret;
}
{
long ret = 0;
byte c = read();
while (c <= ' ') c = read();
boolean neg = c == '-';
if (neg) c = read();
do {
ret = ret * 10 + c - '0';
c = read();
} while (c >= '0' && c <= '9');
if (neg) return -ret;
return ret;
}
{
double ret = 0, div = 1;
byte c = read();
while(c <= ' ') c = read();
boolean neg = c == '-';
if(neg) c = read();
do {
ret = ret * 10 + c - '0';
c = read();
} while (c >= '0' && c <= '9');
if(c == '.')
while((c=read()) >= '0' && c <= '9') {
div *= 10;
ret = ret + (c - '0') / div;
}
if (neg) return -ret;
return ret;
}
{
bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);
if (bytesRead == -1) buffer[0] = -1;
}
{
if (bufferPointer == bytesRead) fillBuffer();
return buffer[bufferPointer++];
}
{
if(din == null) return;
din.close();
}
}
CgoKCQkKCQkJaW1wb3J0IGphdmEuaW8uKjsKCQkJaW1wb3J0IGphdmEudXRpbC4qOwoJCQljbGFzcyBDT01ESVYKCQkJewoJCQkJcHJpdmF0ZSBzdGF0aWMgUmVhZGVyIGluOwoJCQkJcHJpdmF0ZSBzdGF0aWMgUHJpbnRXcml0ZXIgb3V0OwoJCQkJCgkJCQlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKQoJCQkJdGhyb3dzIElPRXhjZXB0aW9uCgkJCQl7CgkJCQkJaW49bmV3IFJlYWRlcigpOwoJCQkJCW91dD1uZXcgUHJpbnRXcml0ZXIoU3lzdGVtLm91dCx0cnVlKTsKCQkJCQkKCQkJCQlCdWZmZXJlZFJlYWRlciBicj1uZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwoJCQkJCWludCB0PUludGVnZXIucGFyc2VJbnQoYnIucmVhZExpbmUoKSk7CgkJCQkJYm9vbGVhbiBpc1ByaW1lW109bmV3IGJvb2xlYW5bMTAwMCs0XTsKCQkJCQlpbnQgcHJpbWVzW109bmV3IGludFsxMDAwKzRdOy8vdGhpcyB3aWxsIHN0b3JlIHRoZSBudGggcHJpbWUuIGluIGNvbnNlY3V0aXZlIG9yZGVyCgkJCQkJaW50IHBfaWR4PTA7CgkJCQkJCgkJCQkJQXJyYXlzLmZpbGwoaXNQcmltZSwgdHJ1ZSk7Ly9pbml0aWFsbHkgYXNzdW1lIHRoYXQgYWxsIGFyZSBwcmltZQoJCQkJCWlzUHJpbWVbMF09aXNQcmltZVsxXT1mYWxzZTsKCQkJCQkKCQkJCQlmb3IoaW50IGk9MjtpKmk8PTEwMDI7aSsrKQoJCQkJCXsKCQkJCQkJaWYoaXNQcmltZVtpXSkKCQkJCQkJewoJCQkJCQkJcHJpbWVzW3BfaWR4KytdPWk7CgkJCQkJCQlmb3IoaW50IGo9aTtpKmo8PTEwMDI7aisrKQoJCQkJCQkJCWlzUHJpbWVbaSpqXT1mYWxzZTsKCQkJCQkJfQoJCQkJCX0KCQkJCQkKCQkJCQkKCQkJCQl3aGlsZSh0LS0hPTApIAoJCQkJCXsKCQkJCQkJU3RyaW5nIGluW109YnIucmVhZExpbmUoKS5zcGxpdCgiICIpOwoJCQkJCQlpbnQgYT1JbnRlZ2VyLnBhcnNlSW50KGluWzBdKTsKCQkJCQkJaW50IGI9SW50ZWdlci5wYXJzZUludChpblsxXSk7CgkJCQkJCWludCBnPWdjZChhLGIpOwoJCQkJCQlpZihnPT0xKQoJCQkJCQl7CgkJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oMSk7CgkJCQkJCQljb250aW51ZTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCS8vYWxsIGRpdmlzb3JzIG9mIGcgYW5kIChjb21tb24gZGl2aXNvcnMgb2YgYm90aCAoQSZCKSkgYXJlIHRoZSBzYW1lLiBpdHMgdGhlIHNhbWUgbGlzdAoJCQkJCQkJLy90aGVyZWZvcmUgdGhlIHJlcXVpcmVkIG5vIG9mIGRpdmlzb3JzIGNvbW1vbiB0byBib3RoIGEgYW5kIGIgYXJlIHRoZSBudW1iZXIgb2YgZGl2aXNvcnMgb2YgZy4KCQkJCQkJCWxvbmcgcHJvZD0xOwoJCQkJCQkJaW50IGk9MDsKCQkJCQkJCXdoaWxlKHByaW1lc1tpXSpwcmltZXNbaV08PWcpIAkvLyAmJiBpPHBfaWR4KysKCQkJCQkJCXsKCQkJCQkJCQlpZihpc1ByaW1lW3ByaW1lc1tpXV0pCgkJCQkJCQkJewoJCQkJCQkJCQlpbnQgYz0wOwoJCQkJCQkJCQl3aGlsZShnJXByaW1lc1tpXT09MCkKCQkJCQkJCQkJewoJCQkJCQkJCQkJCgkJCQkJCQkJCQlnLz1wcmltZXNbaV07CgkJCQkJCQkJCQljKys7CgkJCQkJCQkJCX0KCQkJCQkJCQkJcHJvZD1wcm9kKigrK2MpOwoJCQkJCQkJCX0KCQkJCQkJCQlpKys7CgkJCQkJCQl9CgkJCQkJCQlpZihnPjEpCgkJCQkJCQkJcHJvZDw8PTE7CgkJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4ocHJvZCk7CgkJCQkJCX0KCQkJCQkJCgkJCQkJfS8vdAoJCQkJCQoJCQkJCW91dC5mbHVzaCgpOwoJCQkJCW91dC5jbG9zZSgpOwoJCQkJfQoJCQkJCgkJCQkKCQkJCXN0YXRpYyBpbnQgZ2NkKGludCBhICxpbnQgYikKCQkJCXsKCQkJCQlpZihiPT0wKQoJCQkJCQlyZXR1cm4gYTsKCQkJCQllbHNlCgkJCQkJCXJldHVybiBnY2QoYixhJWIpOwoJCQkJfQoJCQl9CgkJCQoJCQkKCQkJLyoqIEZhc3RlciBpbnB1dCAqKi8KCQkJY2xhc3MgUmVhZGVyCgkJCXsKCQkJICAgIGZpbmFsIHByaXZhdGUgaW50IEJVRkZFUl9TSVpFID0gMSA8PCAxNjsKCQkJICAgIAoJCQkgICAgcHJpdmF0ZSBEYXRhSW5wdXRTdHJlYW0gZGluOwoJCQkgICAgcHJpdmF0ZSBieXRlW10gYnVmZmVyOwoJCQkgICAgcHJpdmF0ZSBpbnQgYnVmZmVyUG9pbnRlciwgYnl0ZXNSZWFkOwoJCQkgICAgCgkJCSAgICBwdWJsaWMgUmVhZGVyKCkKCQkJICAgIHsKCQkJICAgICAgICBkaW4gPSBuZXcgRGF0YUlucHV0U3RyZWFtKFN5c3RlbS5pbik7CgkJCSAgICAgICAgYnVmZmVyID0gbmV3IGJ5dGVbQlVGRkVSX1NJWkVdOwoJCQkgICAgICAgIGJ1ZmZlclBvaW50ZXIgPSBieXRlc1JlYWQgPSAwOwoJCQkgICAgfQoJCQkgICAgCgkJCSAgICBwdWJsaWMgUmVhZGVyKFN0cmluZyBmaWxlX25hbWUpIHRocm93cyBJT0V4Y2VwdGlvbgoJCQkgICAgewoJCQkgICAgICAgIGRpbiA9IG5ldyBEYXRhSW5wdXRTdHJlYW0obmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlX25hbWUpKTsKCQkJICAgICAgICBidWZmZXIgPSBuZXcgYnl0ZVtCVUZGRVJfU0laRV07CgkJCSAgICAgICAgYnVmZmVyUG9pbnRlciA9IGJ5dGVzUmVhZCA9IDA7CgkJCSAgICB9CgkJCSAgICAKCQkJICAgIHB1YmxpYyBTdHJpbmcgcmVhZExpbmUoKSB0aHJvd3MgSU9FeGNlcHRpb24KCQkJICAgIHsKCQkJICAgICAgICBieXRlW10gYnVmID0gbmV3IGJ5dGVbNjRdOyAvLyBsaW5lIGxlbmd0aAoJCQkgICAgICAgIGludCBjbnQgPSAwLCBjOwoJCQkgICAgICAgIHdoaWxlKCAoYz1yZWFkKCkpICE9IC0xKSB7CgkJCSAgICAgICAgICAgIGJ1ZltjbnQrK10gPSAoYnl0ZSljOwoJCQkgICAgICAgICAgICBpZihjID09ICdcbicpIGJyZWFrOwoJCQkgICAgICAgIH0KCQkJICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhidWYsMCxjbnQpOwoJCQkgICAgfQoJCQkgICAgCgkJCSAgICBwdWJsaWMgaW50IG5leHRJbnQoKSB0aHJvd3MgSU9FeGNlcHRpb24KCQkJICAgIHsKCQkJICAgICAgICBpbnQgcmV0ID0gMDsKCQkJICAgICAgICBieXRlIGMgPSByZWFkKCk7CgkJCSAgICAgICAgd2hpbGUgKGMgPD0gJyAnKSBjID0gcmVhZCgpOwoJCQkgICAgICAgIGJvb2xlYW4gbmVnID0gYyA9PSAnLSc7CgkJCSAgICAgICAgaWYgKG5lZykgYyA9IHJlYWQoKTsKCQkJICAgICAgICBkbyB7CgkJCSAgICAgICAgICAgIHJldCA9IHJldCAqIDEwICsgYyAtICcwJzsKCQkJICAgICAgICAgICAgYyA9IHJlYWQoKTsKCQkJICAgICAgICB9IHdoaWxlIChjID49ICcwJyAmJiBjIDw9ICc5Jyk7CgkJCSAgICAgICAgaWYgKG5lZykgcmV0dXJuIC1yZXQ7CgkJCSAgICAgICAgcmV0dXJuIHJldDsKCQkJICAgIH0KCQkJICAgIAoJCQkgICAgcHVibGljIGxvbmcgbmV4dExvbmcoKSB0aHJvd3MgSU9FeGNlcHRpb24KCQkJICAgIHsKCQkJICAgICAgICBsb25nIHJldCA9IDA7CgkJCSAgICAgICAgYnl0ZSBjID0gcmVhZCgpOwoJCQkgICAgICAgIHdoaWxlIChjIDw9ICcgJykgYyA9IHJlYWQoKTsKCQkJICAgICAgICBib29sZWFuIG5lZyA9IGMgPT0gJy0nOwoJCQkgICAgICAgIGlmIChuZWcpIGMgPSByZWFkKCk7CgkJCSAgICAgICAgZG8gewoJCQkgICAgICAgICAgICByZXQgPSByZXQgKiAxMCArIGMgLSAnMCc7CgkJCSAgICAgICAgICAgIGMgPSByZWFkKCk7CgkJCSAgICAgICAgfSB3aGlsZSAoYyA+PSAnMCcgJiYgYyA8PSAnOScpOwoJCQkgICAgICAgIGlmIChuZWcpIHJldHVybiAtcmV0OwoJCQkgICAgICAgIHJldHVybiByZXQ7CgkJCSAgICB9CgkJCSAgICAKCQkJICAgIHB1YmxpYyBkb3VibGUgbmV4dERvdWJsZSgpIHRocm93cyBJT0V4Y2VwdGlvbgoJCQkgICAgewoJCQkgICAgICAgIGRvdWJsZSByZXQgPSAwLCBkaXYgPSAxOwoJCQkgICAgICAgIGJ5dGUgYyA9IHJlYWQoKTsKCQkJICAgICAgICB3aGlsZShjIDw9ICcgJykgYyA9IHJlYWQoKTsKCQkJICAgICAgICBib29sZWFuIG5lZyA9IGMgPT0gJy0nOwoJCQkgICAgICAgIGlmKG5lZykgYyA9IHJlYWQoKTsKCQkJICAgICAgICBkbyB7CgkJCSAgICAgICAgICAgIHJldCA9IHJldCAqIDEwICsgYyAtICcwJzsKCQkJICAgICAgICAgICAgYyA9IHJlYWQoKTsKCQkJICAgICAgICB9IHdoaWxlIChjID49ICcwJyAmJiBjIDw9ICc5Jyk7CgkJCSAgICAgICAgaWYoYyA9PSAnLicpCgkJCSAgICAgICAgICAgIHdoaWxlKChjPXJlYWQoKSkgPj0gJzAnICYmIGMgPD0gJzknKSB7CgkJCSAgICAgICAgICAgICAgICBkaXYgKj0gMTA7CgkJCSAgICAgICAgICAgICAgICByZXQgPSByZXQgKyAoYyAtICcwJykgLyBkaXY7CgkJCSAgICAgICAgICAgIH0KCQkJICAgICAgICBpZiAobmVnKSByZXR1cm4gLXJldDsKCQkJICAgICAgICByZXR1cm4gcmV0OwoJCQkgICAgfQoJCQkgICAgCgkJCSAgICBwcml2YXRlIHZvaWQgZmlsbEJ1ZmZlcigpIHRocm93cyBJT0V4Y2VwdGlvbgoJCQkgICAgewoJCQkgICAgICAgIGJ5dGVzUmVhZCA9IGRpbi5yZWFkKGJ1ZmZlciwgYnVmZmVyUG9pbnRlciA9IDAsIEJVRkZFUl9TSVpFKTsKCQkJICAgICAgICBpZiAoYnl0ZXNSZWFkID09IC0xKSBidWZmZXJbMF0gPSAtMTsKCQkJICAgIH0KCQkJICAgIAoJCQkgICAgcHJpdmF0ZSBieXRlIHJlYWQoKSB0aHJvd3MgSU9FeGNlcHRpb24KCQkJICAgIHsKCQkJICAgICAgICBpZiAoYnVmZmVyUG9pbnRlciA9PSBieXRlc1JlYWQpIGZpbGxCdWZmZXIoKTsKCQkJICAgICAgICByZXR1cm4gYnVmZmVyW2J1ZmZlclBvaW50ZXIrK107CgkJCSAgICB9CgkJCSAgICAKCQkJICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIElPRXhjZXB0aW9uCgkJCSAgICB7CgkJCSAgICAgICAgaWYoZGluID09IG51bGwpIHJldHVybjsKCQkJICAgICAgICBkaW4uY2xvc2UoKTsKCQkJICAgIH0KCQkJfQoJCQk=