輾轉相除法原理解析

遇見1995發表於2018-07-13

輾轉相除法

**基本原理:**兩個整數的最大公約數等於,其中較小的數和兩數的差的最大公約數。

**個人解析:**若A、B有最大公約數K(A > B),則,A、B、(A - B)、A mod B(A / B的餘數),都是K的倍數。即餘數(A - B)和 B 的最大公公約數也是 K 。

由此遞迴,可知當 A mod B = 0,即 A 是 B 的倍數時,此時,B 即為 K 。

Java實現程式碼:

//遞迴求解
public static int gcd(int m, int n) {
	while (true) {
		if ((m = m % n) == 0)
			return n;

		if ((n = n % m) == 0)
			return m;
	}
}

擴充套件應用—求最小公倍數

//查詢最小公倍數
public static int gcd(int m, int n){
	int mn, r ;
	
	if(m<n){
		mn = m ; 
		m = n ; 
		n = mn;
	}
	
	mn = m * n ;//倆個數的乘積
	r = m Mod n ;
	while(r!=0){
		m = n ;
		n = r ;
		r = m Mod n ;
	}
	return mn/n; //n為最大公約數
}

自薦

期待關注我的微信公眾號 「 程式設計圖解 」 ,檢視最近的文章和動態。

微信公眾號:程式設計圖解

相關文章