題目:
輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。
程序分析:
利用輾除法
程序代碼:
package com.ljy.tencent;
import java.util.Scanner;
/**
* 題目:輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。
* 程序分析:利用輾除法。
* @author liaojianya
* 2016年10月3日
*/
public class LcmGcd
{
public static void main(String[] args)
{
//從控制臺(tái)輸入兩個(gè)數(shù),大小順序隨意
Scanner input = new Scanner(System.in);
System.out.print("輸入第一個(gè)數(shù):");
int num1 = input.nextInt();
System.out.print("輸入第二個(gè)數(shù):");
int num2 = input.nextInt();
//分別調(diào)用求解最大公約數(shù)和最小公倍數(shù)的方法
System.out.println(num1 + "和" + num2 + "的最大公約數(shù)為:" + greatestCommonDivisor(num1, num2));
System.out.println(num1 + "和" + num2 + "的最小公倍數(shù)為:" + leastCommonMultiple(num1, num2));
input.close();
}
//最大公約數(shù)算法(使用輾除法)
public static int greatestCommonDivisor(int n1, int n2)
{
//保證第一個(gè)數(shù)大于第二個(gè)數(shù)
if(n1 < n2)
{
int temp = n1;
n1 = n2;
n2 =temp;
}
//若第一個(gè)數(shù)能整除第二個(gè)數(shù),則第二個(gè)數(shù)即為兩數(shù)的最大公約數(shù)
if(n1 % n2 == 0)
{
return n2;
}
//若第一個(gè)數(shù)不能被第二個(gè)數(shù)整除,則將第二個(gè)數(shù)賦給第一個(gè)數(shù),將先前兩者之間的余數(shù)作為第二個(gè)數(shù),繼續(xù)調(diào)用該方法
else
{
return greatestCommonDivisor(n2, n1 % n2);
}
}
//調(diào)用最大公約數(shù)方法,將num1和num2相乘之后除以?xún)蓚€(gè)數(shù)之前的最大公約數(shù)
public static int leastCommonMultiple(int n1, int n2)
{
return n1 * n2 / (greatestCommonDivisor(n1, n2));
}
}
結(jié)果輸出:
輸入第一個(gè)數(shù):12
輸入第二個(gè)數(shù):23
12和23的最大公約數(shù)為:1
12和23的最小公倍數(shù)為:276