lcm&gcd&因數分解

又是一個快樂的數論題,快樂的就像魚沒有水一樣,蹦蹦跳跳......

lcm(p,q) = (p*q)/gcd(p*q)

p*q = lcm*gcd = sum

利用上面的等式,從1到i*i == sum分解sum的因子,需要注意一點是,gcd(i,sum/i) == x

7-2 最大公約數和最小公倍數2 (20分)

最大公約數和最小公倍數2

輸入2個正整數x0,y0(2≤x0≤1000000,2≤y0≤1000000), 求出滿足下列條件的P,Q的個數

條件:

P,Q是正整數

要求P,Q以x0爲最大公約數,以y0爲最小公倍數.

試求:滿足條件的所有可能的2個正整數的個數.

輸入格式:

2個正整數x0,y0

輸出格式:

1個數,表示求出滿足條件的P,Q的個數

輸入樣例:

3 60

輸出樣例:

4
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll x,y,ans,sum;
int main()
{
    cin>>x>>y;
    sum = x*y;
    for(ll i = 1; i*i <= sum; i++)
    {
        if(sum%i == 0 && __gcd(sum/i,i) == x)
        {
            if(i*i == sum) ans++;
            else ans += 2;
        }
    }
    cout<<ans<<endl;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章