D
题意
问A B 两个数中有多少个互质的公约数
思路
只用考虑最大公约数的质因数即可
#include<bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b)
{
if(b==0) return a;
a%=b;
return gcd(b,a);
}
long long d(long long n)
{
if(n==1) return 1;
long long c=0;
for(long long i=2;i*i<=n;++i)
{
if(n%i==0)
{
++c;
while(n%i==0){
n/=i;
}
}
}
if(n>1)
{
c+=2;
}
if(n==1)
{
c+=1;
}
return c;
}
int main()
{
long long a,b;
cin>>a>>b;
cout<<d((gcd(a,b)))<<endl;
}