题目:
求两个数的最小公约数和最小公倍数
思路:
求最大公约数: 欧几里得在其《几何原本》中提出的欧几里得算法,有称辗转相除法,
具体做法是如果q和r分别是m除以n的商及玉树,m=nq+r,那么m和n的最大公约数等于n和
r的最大公约数
求最小公倍数:最小公倍数等于a*b/他们的最大公约数
代码实现:
package com.chenyu.zuo.other;
/**
* @author Think
*/
public class Gcd {
/**欧几里得在其《几何原本》中提出的欧几里得算法,有称辗转相除法,
* 具体做法是如果q和r分别是m除以n的商及玉树,m=nq+r,那么m和n的最大公约数等于n和
* r的最大公约数,下面是递归实现
* @param a
* @param b
* @return
*/
public int gcd1(int a,int b){
return b==0?a:gcd1(b,a%b);
}
/**
* 不用递归实现
* @param a
* @param b
* @return
*/
public int gcd2(int a,int b){
int temp=0;
while(b!=0){
temp=a%b;
a=b;
b=temp;
}