先求出素数,统计各个素数个数,然后根据素数形成的解的个数乘以下一个素数的个数
#include <cstdio>
#include <cmath>
int num[1010];
int main()
{
//freopen("in.txt","r",stdin);
int t,n,m,k,sum;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
if(m%n!=0)
{
printf("0\n");
continue;
}
m/=n;
int len=(int)sqrt(0.5+m);
k=0,sum=1;
for(int i=2; i<=len&&m>1; ++i)
if(m%i==0)
{
num[k]=0;
while(m%i==0) ++num[k],m/=i;
++k;
}
if(m!=1) num[k++]=1;
for(int i=0; i<k; ++i) sum=sum*num[i]*6;
printf("%d\n",sum);
}
return 0;
}