歐幾里德演算法

2022-02-27 01:44:26 字數 730 閱讀 6302

歐幾里德演算法稱為輾轉相除法,用來求已知m、n兩個自然數的公因數。結合程式說明一下輾轉相除的具體情況。

首先看遞迴實現:

1

int getcd(int m,intn)2

6if(m if(m % n)

1316

else

1720 }

主要計算過程分為三個步驟:

1、對輸入的兩個自然數m > n取餘數r,使得0<= r < n

2、如果r為0,n即為所求結果,直接返回

3、r不為0,則賦值m=n,n=r從步驟1開始重新執行

兩自然數的公因數的定義說明了計算結果產生的條件。如果步驟1中計算出的餘數r = 0,則較小的數為公因數。如果r!=0則自然數m、n的關係可表示為:m = kn + r(其中k為自然數),等式可以證明能整除m的任何數必定能整除n和r;等式進一步可變形為:r = m - kn,說明同時整除m、n的任何數也必定能整除r。也就是說,能整除m、n的數的集合與整除n、r的數的集合相等。所以輾轉相除的方法成立。

再發布乙個迴圈實現歐幾里德演算法的版本。

1

int getcd2(int m,intn)2

6if(mint cd = 1;13

while(1)

20else24}

25return

cd;26 }

水平有限,能力不足,若有貽笑大方之處,請各位大神及時指出,本人也好及時改正。

擴充套件歐幾里德演算法

擴充套件歐幾里德演算法已經搞了好幾天了,今天終於看明白,小做總結。講擴充套件歐幾里得演算法之前,先講歐幾里得演算法和貝祖定理。歐幾里得演算法 歐幾里得演算法就是輾轉相除法,即gcd a,b gcd b,a b 簡單證明一下 r gcd a,b a nr,b mr。a b n n m m r。因為gc...

歐幾里德演算法 冪運算

文中x n 表示x的n次方 計算x n 的明顯演算法是使用n 1次乘法自乘,有一種遞迴演算法更好 n 1是這種遞迴的基準情形,否則若n為偶數,我們有x n x n 2 x n 2 若x為奇數,則x n x n 1 2 x n 1 2 x 例如 為了計算x 62 演算法將如下進行,它只用到9次乘法 在...

輾轉相除法 歐幾里德演算法 原理

原理 假設有兩個數x和y,存在乙個最大公約數z x,y 即x和y都有公因數z,那麼x一定能被z整除,y也一定能被z整除,所以x和y的線性組合mx ny也一定能被z整除。m和n可取任意整數 對於輾轉相除法來說,思路就是 若x y,設x y n餘c,則x能表示成x ny c的形式,將ny移到左邊就是x ...