求两个数的最小公约数和最小公倍数

189 阅读1分钟

题目:

求两个数的最小公约数和最小公倍数

思路:

求最大公约数: 欧几里得在其《几何原本》中提出的欧几里得算法,有称辗转相除法,
具体做法是如果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;
    	}