對於輾轉相除法的理解

2022-09-11 04:24:15 字數 884 閱讀 9341

1.輾轉相除法的使用

例如:求120和35的最大公約數

有120%35=15

35%15=5

15%5=0

此時5就是120和35的最大公約數

推理可知:

要求兩個數的最大公約數,可用第乙個數對第二個數取餘,若餘數不為0,則用被餘數在對餘數取餘,直到餘數為0,此時的被餘數就是最大公約數

迴圈**:

#include

using namespace std;

int main()

cout}遞迴**:

int gcd(int a, int b)

2.輾轉相除法的原理

輾轉相除法求最大公約數原理:

設兩數為a、b(a>b),用gcd(a,b)表示a,b的最大公約數,r=a mod b 為a除以b的餘數,k為a除以b的商,即a÷b=k.......r。由輾轉相除法的用法可知想證明輾轉相除法即是要證明gcd(a,b)=gcd(b,r)。

第一步:令c=gcd(a,b),則設a=mc,b=nc

第二步:根據前提可知r =a-kb=mc-knc=(m-kn)c

第三步:根據第二步結果可知c也是r的因數

第四步:假設m-kn=xd,n=yd (d>1),則m=kn+xd=kyd+xd=(ky+x)d,則a=mc=(ky+x)cd,b=nc=ycd,則a與b的乙個公約數cd>c,故c非a與b的最大公約數,與前面結論矛盾),推出m-kn與n互質,即m - kn 與 n 之間無公因數,又因為r = (m - kn)c , b = nc, 所以r和b的公因數只可能在c中 ,因次c是r,b的最大公因數。

從而可知gcd(b,r)=c,繼而gcd(a,b)=gcd(b,r)。

證畢。以上步驟的操作是建立在剛開始時r≠0的基礎之上的。即m與n亦互質。

輾轉相除法原理

輾轉相除法原理 假設有兩個數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移到左...

約分 輾轉相除法

include using namespace std int main int temp1 int temp2 cin temp1 temp2 int a temp1 int b temp2 while b 0 int temp a b a b b temp cout 輾轉相除法 輾轉相除法是求兩...

模板 輾轉相除法

處理最大公因數時十分好用 但是我證不出來。gcd a,b gcd b,a mod b b 0 設兩數為a b a b 用gcd a,b 表示a,b的最大公約數,r a mod b 為a除以b的餘數,k為a除以b的商,即a b kr。輾轉相除法即是要證明gcd a,b gcd b,r 第一步 令c g...