比例化到最简
代码:
#include <iostream>
#include<cstdio>
using namespace std;
#define LL long long
//LL a[1000000+10];
LL GCD(LL a,LL b)
{
if(b==0)
return a;
return GCD(b,a%b);
}
int main()
{
LL n,m;
LL ans,cnt1,cnt2,A,B,gcd;
ans=cnt1=cnt2=0;
scanf("%lld%lld",&n,&m);
for(LL i=1;i*i<=n;i++)
{
if(n%i==0)
{
//a[i]=1;
//a[n/i]=1;
cnt1+=2;
if(i*i==n)
cnt1--;
}
}
for(LL j=1;j*j<=m;j++)
{
if(m%j==0)
{
cnt2+=2;
if(j*j==m)
cnt2--;
if(n%j==0)
ans++;
if(n%(m/j)==0&&(m/j)!=j)
ans++;
}
}
A=ans;
B=cnt1*cnt2;
gcd=GCD(A,B);
A=A/gcd;
B=B/gcd;
printf("%lld %lld\n",B,A);
return 0;
}