//这道题开始想着的是去枚举那两个数,是一个n^2的算法
//但正解其实很tm容易,就是我们要根据那个gcd和lcm,用o(n)解决这个问题
//主要是要利用两数之积=lcm*gcd
/*#include<cstdio>
#include<cstdlib>
using namespace std;
inline int gcd(int x,int y){return y?gcd(y,x%y):x;}
inline int lcm(int x,int y){return x*y/gcd(x,y);}
int main()
{
int x0,y0,ans=0;
scanf("%d %d",&x0,&y0);
for(int i=x0;i<y0;i++)
for(int j=i+1;j<=y0;j++)
if(gcd(i,j)==x0&&lcm(i,j)==y0) ans++;
printf("%d\n",ans<<1);
return 0;
}*/
#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<cstring>
#include<iostream>
using namespace std;
inline long long gcd(long long x,long long y) {return y?gcd(y,x%y):x;}
int main()
{
long long x0,y0,ans=0;
scanf("%lld%lld",&x0,&y0);
for(long long i=x0;i<=y0;i++)
{
long long q=x0*y0/i;
long long xzz=gcd(q,i);
if(q*i==x0*y0&&xzz==x0) ans++;
}
printf("%lld\n",ans);
}
大家多多支持cjoj哦
http://oj.changjun.com.cn