D - Disjoint Set of Common Divisors

https://atcoder.jp/contests/abc142/tasks/abc142_d

题意

求满足互素条件下的A和B的因子最多有几个

 

思路:

分解gcd(A,B)的质因子,再加上1;

#include <iostream>
#include<algorithm>
#include<string>
using namespace std;
const int maxn =1e5+10;
long long gcd(long long x,long long y)
{
    if(y==0)return x;
    return gcd(y,x%y);
}
int main()
{
    long long x,y;
    cin >> x >> y;
    long long g=gcd(x,y);
    long long ans=0;
    for(long long i=2;i<= g / i; i++)
    {
        if(g%i==0)
        {
            ans++;
            while(g%i==0) g/=i;
        }
    }
    if(g>1) ans++;
    cout << ans +1 <<endl;
    return 0;
}

 

posted @ 2019-09-29 19:55  晴天要下雨  阅读(339)  评论(0编辑  收藏  举报