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

来源:互联网 发布:全球社交软件用户数量 编辑:程序博客网 时间:2024/05/19 04:07

题目:

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

思路:

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

运行结果:

第一种方法求最大公约数6第二种方法求最大公约数3最小公倍数21



0 0
原创粉丝点击