ABC 142

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;
}

猜你喜欢

转载自www.cnblogs.com/317zhang/p/11608257.html
142
ABC
今日推荐