题目6:求其最大公约数和最小公倍数

作者: Hughman | 来源:发表于2017-02-12 19:48 被阅读58次

题目:

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

程序分析:

利用辗除法

程序代码:

package com.ljy.tencent;
import java.util.Scanner;
/**
 * 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
 * 程序分析:利用辗除法。
 * @author liaojianya
 * 2016年10月3日
 */
public class LcmGcd
{
    public static void main(String[] args)
    {
        //从控制台输入两个数,大小顺序随意
        Scanner input = new Scanner(System.in);
        System.out.print("输入第一个数:");
        int num1 = input.nextInt();
        System.out.print("输入第二个数:");
        int num2 = input.nextInt();
        //分别调用求解最大公约数和最小公倍数的方法
        System.out.println(num1 + "和" + num2 + "的最大公约数为:" + greatestCommonDivisor(num1, num2));    
        System.out.println(num1 + "和" + num2 + "的最小公倍数为:" + leastCommonMultiple(num1, num2));
        input.close();
    }
    //最大公约数算法(使用辗除法)
    public static int greatestCommonDivisor(int n1, int n2)
    {
        //保证第一个数大于第二个数
        if(n1 < n2)
        {
            int temp = n1;
            n1 = n2;
            n2 =temp;
        }
        //若第一个数能整除第二个数,则第二个数即为两数的最大公约数
        if(n1 % n2 == 0)
        {
            return n2;
        }
        //若第一个数不能被第二个数整除,则将第二个数赋给第一个数,将先前两者之间的余数作为第二个数,继续调用该方法
        else
        {
            return greatestCommonDivisor(n2, n1 % n2);
        }
    }
    //调用最大公约数方法,将num1和num2相乘之后除以两个数之前的最大公约数
    public static int leastCommonMultiple(int n1, int n2)
    {
        return n1 * n2 / (greatestCommonDivisor(n1, n2));
    }
}

结果输出:

输入第一个数:12
输入第二个数:23
12和23的最大公约数为:1
12和23的最小公倍数为:276

相关文章

网友评论

    本文标题:题目6:求其最大公约数和最小公倍数

    本文链接:https://www.haomeiwen.com/subject/xzgaittx.html