代码短,但是速度慢一点
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define ll long long
using namespace std;
ll gcd,lcm;
ll pg[1090],ag[1090],pl[1090],al[1090],tot;
int main()
{
int T;
scanf("%d",&T);
while (T--)
{
ll ans=1;
scanf("%lld%lld",&gcd,&lcm);
memset(pg,0,sizeof(pg));
memset(ag,0,sizeof(ag));
memset(pl,0,sizeof(pl));
memset(al,0,sizeof(al));
if (lcm%gcd) ans=0;
int sq=(int)sqrt(lcm);
for (int i=2;i<=lcm;i++)
if (lcm%i==0)
{
pl[++tot]=i;
while (lcm%i==0) lcm/=i,al[tot]++;
while (gcd%i==0) gcd/=i,ag[tot]++;
if (al[tot]>ag[tot])ans=ans*(al[tot]-ag[tot])*6;
}
printf("%lld\n",ans);
}
return 0;
}