當前位置:首頁 » 操作系統 » 擴展歐幾里德演算法

擴展歐幾里德演算法

發布時間: 2025-03-02 12:51:33

『壹』 什麼是歐幾里得演算法,它有什麼意義

歐幾里得演算法即輾轉相除法,用以求兩個數的最大公約數(或者最小公倍數)
證明如下
假設x,y的最大公約數為d
且設x=k1*d,y=k2*d;
則有z=x-y=(k1-k2)*d;
也必定能被d整除,所以通過兩個數不斷輾轉,直到其中一個變為0為止,以此最終快速得出兩個數的最大公約數。
在演算法的應用上是用求余以加速運算的速度。
總的來說,歐幾里得演算法的意義就是快速求得兩個數的最大公約數。

『貳』 關於擴展歐幾里得演算法有點不明白,請大神指教

這是通過數學計算出來的(所以,學好數學很重要),其實你應該仔細理解該演算法的原理!如下內容摘自:http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html
擴展歐幾里德演算法
基本演算法:對於不完全為 0 的非負整數 a,b,gcd(a,b)表示 a,b 的最大公約數,必然存在整數對 x,y ,使得 gcd(a,b)=ax+by。
證明:設 a>b。
1,顯然當 b=0,gcd(a,b)=a。此時 x=1,y=0;
2,ab!=0 時
設 ax1+by1=gcd(a,b);
bx2+(a mod b)y2=gcd(b,a mod b);
根據樸素的歐幾里德原理有 gcd(a,b)=gcd(b,a mod b);
則:ax1+by1=bx2+(a mod b)y2;
即:ax1+by1=bx2+(a-(a/b)*b)y2=ay2+bx2-(a/b)*by2;
根據恆等定理得:x1=y2; y1=x2-(a/b)*y2;
這樣我們就得到了求解 x1,y1 的方法:x1,y1 的值基於 x2,y2.
上面的思想是以遞歸定義的,因為 gcd 不斷的遞歸求解一定會有個時候 b=0,所以遞歸可以結束。

『叄』 擴展歐幾里德演算法的歐幾里德演算法

歐幾里德演算法又稱輾轉相除法,用於計算兩個整數a,b的最大公約數。其計算原理依賴於下面的定理:
gcd函數就是用來求(a,b)的最大公約數的。
gcd函數的基本性質:
gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|) gcd(a,b)=gcd(b,a mod b)
證明:a可以表示成a = kb + r,則r = a mod b
假設d是a,b的一個公約數,則有
d|a, d|b,而r = a - kb,因此d|r
因此d是(b,a mod b)的公約數
假設d 是(b,a mod b)的公約數,則
d | b , d |r ,但是a = kb +r
因此d也是(a,b)的公約數
因此(a,b)和(b,a mod b)的公約數是一樣的,其最大公約數也必然相等,得證 functiongcd(a,b:longint;varx,y:longint):longint;vart:longint;beginifb=0thenbeginx:=1;y:=0;exit(a);end;gcd:=gcd(b,amodb,x,y);t:=x;x:=y;y:=t-(adivb)*y;end;

熱點內容
資料庫存儲查詢 發布:2025-03-03 10:11:58 瀏覽:812
如何改網銀密碼 發布:2025-03-03 10:01:31 瀏覽:441
解壓煙花 發布:2025-03-03 10:00:17 瀏覽:351
mac瀏覽器緩存清理 發布:2025-03-03 10:00:17 瀏覽:59
我的世界forlinux 發布:2025-03-03 10:00:05 瀏覽:208
用二叉鏈做存儲結構 發布:2025-03-03 09:54:05 瀏覽:455
資料庫qbe 發布:2025-03-03 09:53:56 瀏覽:756
iis編譯器錯誤怎麼辦 發布:2025-03-03 09:50:37 瀏覽:60
雲伺服器cdn 發布:2025-03-03 09:43:21 瀏覽:505
趣編程下載 發布:2025-03-03 09:34:17 瀏覽:346