天天看點

P1029 最大公約數和最小公倍數問題 AC于2018.10.20

原題

題目描述

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

條件:

  1. P,Q是正整數
  2. 要求P,Q以x0​為最大公約數,以y0​為最小公倍數.

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

輸入輸出格式

輸入格式:

2個正整數x0​,y0​

輸出格式:

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

輸入輸出樣例

輸入樣例#1: 

3 60
      

輸出樣例#1: 

4
      

說明

P,Q有4種

1、3,60

2、15,12

3、12,15

4、60,3

#include<iostream>
#include<cmath>
using namespace std;
int m,n,ans;
int gcd(int x,int y)
{
    if(y==0)    
    return x;
    return gcd(y,x%y);
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=sqrt(m*n);i++)
    {
        if((n*m)%i==0&&gcd(i,(n*m)/i)==n)  
        ans++;
    }
    cout<<ans*2;
    return 0;
}