1、什麼是最大公約數
最大公約數指的是兩個或多個整數共有約數中最大的乙個。
如果數a能被數b整除,a就叫做b的倍數,b就叫做a的約數。
如,2,4,6的最大公約數(2,4,6)=2.
(12,16)=4;
(12,15,18)=3;
2、輾轉相除法的說明
輾轉相除法也叫歐幾里德演算法。
即兩個整數的最大公約數等於其中較小的那個數和兩數相除餘數的最大公約數。
如(50,85):
因為50/85=0,餘50
所以(50,85)=(85,50) (也就是把大的乙個放在左邊)
85/50=1(餘35)
所以(85,55)=(50,35);
因為50/35=1,餘15
所以(50,35)=(35,15)
因為35/15=2,餘5
所以(35,15)=(15,5)
因為15/5=3,餘0
所以(15,5)=5
所以(50,85)=5,也就是50和85的最小公倍數為5.
3、**實現:
#include
intmain()
while
(r!=0)
//因為此時迴圈結束,r=0,但b的值已經賦值給了a
//所以應該返回a
printf
("%d"
,a);
return0;
}
輾轉相除法求最大公約數
之前總結過一次高德納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 ...
基於輾轉相除法求最大公約數
1 p 0,q 0 無最大公約數 2 p 0,q 0 最大公約數為q 3 p 0,q 0 最大公約數為p 4 p 0,q 0 最大公約數可通過輾轉相除取餘數轉化為 2 3 這樣的情況來求解 遞迴版,非遞迴用迴圈 public class euclid public static int euclid...