思路:
和这道题本质相同
c o d e code code
#include<iostream>
#include<cstdio>
using namespace std;
long long t;
long long n, m;
long long gcd(long long a, long long b)
{
if(b==0)
return a;
else return gcd(b, a%b);
}
int main()
{
scanf("%lld%lld", &n, &m);
if(n==m)
{
printf("1");
return 0;
}
long long k=m/n, ans=0;
if(gcd(n, m)!=n)
{
printf("0");
return 0;
}
for(long long i=1; i*i<=k; i++)
{
if(k%i==0&&k%(k/i)==0&&gcd(i, k/i)==1)
ans+=2;
}
printf("%lld\n", ans);
return 0;
}