62,628
社区成员
发帖
与我相关
我的任务
分享


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;
}
return a;
}
/**求最小公倍数
* 最小公倍数等于a*b/他们的最大公约数
* @param a
* @param b
* @return
*/
public int lcm(int a,int b){
int gcd=gcd1(a,b);
return (a*b)/gcd;
}
public static void main(String[] args) {
Gcd gcd=new Gcd();
System.out.println("第一种方法求最大公约数"+gcd.gcd1(12, 6));
System.out.println("第二种方法求最大公约数"+gcd.gcd2(12, 9));
System.out.println("最小公倍数"+gcd.lcm(3, 7));
}
}