图片说明

移项后是个分数,分离常数项出来得到
图片说明
容易知道x一定大于b,所以就是看ab有多少个因子个数
直接sqrt计算会TLE
所以预处理出来1e6以内的素数即可

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+50;
bool vis[N];
int pri[N],tot;
void init(){
    for(ll i=2;i<N;i++){
        if(!vis[i]){
            pri[tot++]=i;
            for(ll j=i*i;j<N;j+=i) vis[j]=1;
        }
    }
}
int main(){
    init();
    int T;cin>>T;
    while(T--){
        ll x,y;cin>>x>>y;
        ll ans=1;
        ll q=x*y;
        for(int i=0;i<tot;i++){
            if(q%pri[i]==0){
                int cnt=0;
                while(q%pri[i]==0) q/=pri[i],++cnt;
                ans*=(cnt+1);
            }
        }
        if(q!=1) ans*=2;
        cout<<ans<<endl;
    }
    return 0;
}