此题可以使用暴力破解法解决,但是效率不高。
欧几里德算法又称辗转相除法,其计算原理依赖于下面的定理:
gcd(a,b) = gcd(b,a mod b) (a>b 且a mod b 不为0) (证明网上一大堆)
此题只要令r = a mod b展开循环即可。
贴上Java实现代码
/**
* 欧几里得算法求最大公约数
* @author Beat IT
*
*/
public class GCD {
public static void main(String[] args) {
int integer1 = 48;
int integer2 = 36;
//求最大公约数
int r = getGcd(integer1,integer2);
System.out.println(r);
}
//欧几里得方法
public static int getGcd(int m,int n){
int r = m%n;
while(r!=0){
m = n;
n = r;
r = m%n;
}
return n;
}
}