GCD算法原理介绍
辗转相除法
入参
large 大数
less 小数
循环中止条件是 large%less==0,取模等于0,代表可以除尽(倍数关系)。然后从大往小开始寻找公约数
1.非递归版本(数字太大时递归会超出栈最大值)
private int gcd(int large,int less){
int c = large%less;
while(c!=0){
large=less;
less=c;
c = large%less;
}
return less;
}
2.递归版本gcd
private int gcd(int large,int less){
if(less==0){
return large;
}
return gcd(less,large%less);
}
实践中,关键的是如何将实际问题转为基于数字的最大公约数问题