Java经典算法40例(六)

来源:互联网 发布:宁波plc编程招聘 编辑:程序博客网 时间:2024/06/08 10:00

输入两个正整数m和n,求其最大公约数和最小公倍数。

分析:
        求最大公约数采用辗转相除法:
            m、n为两个正整数,通常使m>=n。
            m/n=c……d;
            把n作为新的m,d作为新的n,再次相除,知道余数c=0。此时的n就是最大公约数。
        求最小公倍数:
            最小公倍数*最大公因数=两数乘积

代码:

import java.util.Scanner;/** * 最大公约数 * 最小公倍数 * @author cheng * */public class Six {    //求最大公约数:辗转相除法    public int gongyueshu(int m,int n){        if(n>m){            int temp=0;            temp=n;            n=m;            m=temp;        }           while(m%n!=0){            int a=m%n;            m=n;            n=a;        }        return n;    }    //求最小公倍数    public int gongbeishu(int m,int n){        int b=m*n/(gongyueshu(m, n));        return b;    }    public static void main(String[] args){        Six six=new Six();        System.out.println("请输入一个正整数");        Scanner in=new Scanner(System.in);        int m=in.nextInt();        System.out.println("请输入另一个正整数");        int n=in.nextInt();        System.out.println("最大公约数为:"+six.gongyueshu(m,n));        System.out.println("最小公倍数为:"+six.gongbeishu(m, n));        in.close();    }}

输出结果:

请输入一个正整数6请输入另一个正整数8最大公约数为:2最小公倍数为:24