輾轉相除法求兩個數的最大公約數

2021-08-10 18:36:16 字數 528 閱讀 4922

輾轉相除法:設兩數為a、b(a>b),求a和b最大公約數(a,b)的步驟如下:

1.用a除以b,得a÷b=q ……r 1(0≤r1)。若r 1=0,則(a,b)=b;

2.若r 1≠0,則再用b除以r 1,得b÷r 1=q ……r 2 (0≤r 2).若r 2=0,則(a,b)=r 1,若r 2≠0,則繼續用r 1除以r 2, ……如此下去,直到能整除為止。其最後乙個餘數為0的被除數的除數即為(a, b)的最大公約數。

**例如:**a=25,b=15,a/b=1 ……10,b/10=1 ……5,10/5=2 …….0,最後乙個餘數為0的被除數的除數就是5, 5就是所求最大公約數。

#include

int main()

else

printf("最大公約數為b=%d\n", b);

}return

0;}

**難點:**while迴圈內交換值時發生錯誤

求兩個數的最大公約數 輾轉相除法

原文 輾轉相除法 當兩個數都較大時,採用輾轉相除法比較方便 其方法是 以小數除大數,如果能整除,那麼小數就是所求的最大公約數 否則就用餘數來除剛才的除數 再用這新除法的餘數去除剛才的餘數 依此類推,直到乙個除法能夠整除,這時作為除數的數就是所求的最大公約數 例如 求4453和5767的最大公約數時,...

輾轉相除法求最大公約數

之前總結過一次高德納taocp中的最大公約數求解,其實課後題中的演算法修改要求實現的是輾轉相除法求解最大公約數。這個題目我最初的理解理解錯了,自然也沒有做出標準答案。現在按照標準答案的解答寫一下相應的 實現 defmaxcommdivisor m,n while m n 0 m m n if m 0...

求最大公約數 輾轉相除法

設求a和b的最大公約數c 則可看做邊長分別為a和b的矩形,可恰好被邊長為c的正方形無縫隙填滿 方法 不斷地用長邊除以短邊取餘數,直到長邊與短邊相等,即為所求正方形 給定平面上的兩個格點p1 x1,y1 p2 x2,y2 線段p1p2上,除p1和p2以外一共有幾個點。示例 p1 3,9 p2 7,1 ...