C 求兩個數的最大公約數 方法大全!!

2021-09-24 01:33:47 字數 2097 閱讀 3566

之前用c語言實現過 求最大公約數:

這裡我將用c++ 繼續實現其他幾種方法的解析。

題目描述

輸入兩個數,求最大公約數。

主要演算法及示例

1. 查詢約數法

先分別找出兩個數各自所有的約數,再從兩個數的約數中找到公有的約數,其中最大的那個公有約數就是要求的最大公約數。

#includeusing namespace std;

int main()

cout<

2. 更相減損法

1)判斷兩個數是否是偶數,如果是用2約簡;如果不是則執行第二步

2)設a為兩數中較大的數,b為較小的數,c = a-b,接著c與b比較,再次較大的數減去較小的數,直到較小的數與當前的差c相等。

則最大公約數等於第一步中約掉的若干個2與第二步中得出的c的乘積。

3. 求差判定法

如果兩個數相差不大,可以用大數減去小數,所得的差與小數的最大公約數就是原來兩個數的最大公約數.例如:求78和60的最大公約數.78-60=18,18和60的最大公約數是6,所以78和60的最大公約數是6.

如果兩個數相差較大,可以用大數減去小數的若干倍,一直減到差比小數小為止,差和小數的最大公約數就是原來兩數的最大公約數.例如:求92和16的最大公約數.92-16=76,76- 16=60, 60-16=44,44-16=28,28-16=12,12和16的最大公約數是4,所以92和16的最大公約數就是4.

4. 分解因式法

先分別把兩個數分解質因數,再找出它們全部公有的質因數,然後把這些公有質因數相乘,得到的積就是這兩個數的最大公約數.

例如:求125和300的最大公約數.因為125= 5x5x5, 300=2x2x3x5x5,所以125和300的最大公約數是5x5=25.

5. 短除法

為了簡便,將兩個數的分解過程用同乙個短除法來表示,那麼最大公約數就是所有除數的乘積.

例如:求180和324的最大公約數.

因為:5和9互質,所以180和324的最大公約數是4x9=36。

6. 除法

當兩個數中較小的數是質數時,可採用除法求解.即用較大的數除以較小的數,如果能夠整除,則較小的數是這兩個數的最大公約數.

例如:求19和152,13和273的最大公約數。因為152-19=8, 273-13=21. (19和13都是質數. )所以19和152的最大公約數是19, 13和273的最大公約數是13.

7. 縮倍法

如果兩個數沒有之間沒有倍數關係,可以把較小的數依次除以2、3、…直到求得的商是較大數的約數為止,這時的商就是兩個數的最大公約數.例如:求30和24的最大公約數.24+4=6, 6是30的約數,所以30和24的最大公約數是6.

8. 輾轉相除法

掌握了這些方法,小夥伴們就再也不用怕最大公約數和最小公倍數的題了。

看完記得關注博主喲~ 下篇部落格是牛客網的題目:求最小公倍數!

求兩個數最大公約數

題目 寫乙個程式,求兩個正數的最大公約數。如1100100210001,120200021,求其最大公約數 分析 設兩個數分別為x,y 求其最大公約數f x,y 如果有x 2 0而y 2不等於0,那麼可以 約簡為f x 2,y 同樣道理適用於y 如果x與y都是偶數,那麼最大公約數可以為f x 2,y...

求兩個數的最大公約數

求公約數有多種方法,在這主要介紹兩種方法。1 更相減損之術 以兩數中較大的數減去較小的數,獲得的差與原先較小的數構成新的一對數,在以大的數減去小的數,依次迴圈。用同樣的方法操作,直至產生一對相等的數為止,該數即為最大公約數。include include intmain while n 0 if a...

求兩個數的最大公約數

下面用兩種方法求兩個數的最大公約數 第一種,用遞減迴圈從較小的數開始到0依次查詢能同時整除兩個數的數,則這個數就為這兩個數的最大公約數,如下 include include int main else for i tmp i 0 i system pause return 0 第二種方法,輾轉相除法...