最大公約數和最小公倍數問題

2022-03-27 17:00:58 字數 929 閱讀 1066

題目描述 description

輸入二個正整數x0,y0(2<=x0<100000,2<=y0<=1000000),求出滿足下列條件的p,q的個數

條件:  1.p,q是正整數

2.要求p,q以x0為最大公約數,以y0為最小公倍數.

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

輸入描述 input description

二個正整數x0,y0

輸出描述 output description

滿足條件的所有可能的兩個正整數的個數

樣例輸入 sample input

3 60

樣例輸出 sample output

首先我們要知道兩個數的乘積等於這兩個數的最大公約數與最小公倍數的乘積

證明如下:

假設兩個數為 a和b,他們的最大公約數是a/c,

那麼他們的最小公倍數為 (a/c) * a/(a/c) * b/(a/c)

化簡後得 b*c

所以 最大公約數 乘以 最小公倍數 = (a/c) * (b*c) =a*b

所以兩個數的乘積等於這兩個數的最大公約數與最小公倍數的乘積

附ac**:

1 #include2 #include3 #include4 #include5

using

namespace

std;67

intmain()//

判斷同時除以n後兩數是否還有其他公因數

24if(n==1||i/x==1)//

互質 25 ans+=2;//

因為是正反兩種所以直接加二 26}

2728}29

}30 cout31return0;

32 }

最大公約數 最小公倍數

求最大公約數最直接的辦法是從兩數中較小數與2之間的所有整數中乙個乙個的找。但這個方法有點浪費。有兩種有名的方法 1.輾轉相除法2.更相減損之術這兩種方法比較有名,而且現在人教版的高中數學中已經介紹了這兩種方法。下面這個是第2個,因為它只需要加減法就可以,效率高。int maxfactor unsig...

最小公倍數 最大公約數

求最小公倍數演算法 最小公倍數 兩整數的乘積 最大公約數 求最大公約數演算法 1 輾轉相除法 有兩整數a和 b a b得餘數c 若c 0,則 b即為兩數的最大公約數 若c 0,則 a b,b c,再回去執行 例如求27和 15的最大公約數過程為 27 15 餘12 15 12餘3 12 3餘0 因此...

最大公約數,最小公倍數

兩個數最大公約數 輾轉相除法 在數學中,輾轉相除法,又稱歐幾里得演算法,是求最大公約數的演算法。兩個整數的最大公約數是能夠同時整除它們的最大的正整數。輾轉相除法基於如下原理 兩個整數的最大公約數等於其中較小的數和兩數的差的最大公約數。例如 用 a,b 來表示a和b的最大公約數。已知a,b,c為正整數...