题目:
输入两个正整数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