辗转相除法:
辗转相除法(又名欧几里德法)
用于计算两个正整数a,b的最大公约数和最小公倍数
根据这一定理可以采用函数嵌套调用和递归调用形式进行求两个数的最大公约数和最小公倍数,现分别叙述如下:
其算法过程为:
前提:设两数为a,b设其中a 做被除数,b做除数,temp为余数
1、大数放a中、小数放b中;
2、求a/b的余数;
3、若temp=0则b为最大公约数;
4、如果temp!=0则把b的值给a、temp的值给a;
5、返回第二步;
//前提:a>b
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
//迭代法(递推法):欧几里得算法:计算分子分母的最大公约数
// 前提 : a>b
public int gcd(int a, int b) {
while ( b > 0) { //直到b==0
int temp = a % b;
a = b;
b = temp;
}
return a;
}