#include <bits/stdc++.h>
using namespace std;
#define int long long

vector<bool> prime_bool;
vector<int> prime;
vector<int> spf;
//seive algo for prime no.s
void find_prime(int n){
    int rest = n + 10;
    prime_bool.assign(rest, true);
    spf.assign(n+1, -1);
    for(int i=2;i*i<=rest;i++){
        if(prime_bool[i]==false) continue;
        else{
            for(int j=2*i;j<=rest;j+=i){
                prime_bool[j]=false;
                if(spf[j]==-1) spf[j] = i;
            }
        }
    }
    for(int i=2;i<=rest;i++){
        if(prime_bool[i]==true){
            spf[i] = i;
            prime.push_back(i);
        }
    }
}

int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int q;
    cin>>q;
    find_prime(1e6+5);
    while(q--){
        int a, b;
        cin>>a>>b;
        map<int, int> fact;
        while(a>1){
            fact[spf[a]]++;
            a /= spf[a];
        }
        while(b>1){
            fact[spf[b]]++;
            b /= spf[b];
        }
        int ans = 1;
        for(auto i: fact){
            ans *= (2*i.second + 1);  //2 is multiplied as we have to calculte for the square
        }
        cout<<ans<<"\n";
    }
}