一、题目
输入两个正整数 m 和 n,求其最大公约数和最小公倍数
二、题思路
采用辗转相除法
最大公约数:从m,n中较小的那个数开始循环递减,直到能同时整除m和n
最小公倍数:从m,n中较大的那个数开始循环递增,直到可以同时被m和n整除,输出最小公倍数
三、代码实现
package basic.example;
import java.util.Scanner;
/**
* Description: 最大公约数和最小公倍数
*
* @author Eric
* @date 2022/3/27
* @version 1.0
*
* <pre>
* 修改记录:
* 修改后版本 修改人 修改日期 修改内容
* 2022/3/27 Eric 2022/3/27 Create
* </pre>
*
*/
public class BasicFor06 {
/**
* 最大公约数和最小公倍数
* 辗转相除法-》》》
* 最大公约数:从两个数最小的那个数开始递增循环,能同时整除输入两个数
* 最小公倍数:两个数最大的那个数开始递增循环,能同时被输入的两个数整除
* @param args
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个数:");
int first = scanner.nextInt();
System.out.println("请输入第二个数:");
int second = scanner.nextInt();
int i;
for (i = Math.min(first, second); i >= 2; i--) {
if (first % i == 0 && second % i == 0) {
System.out.println("最大公约数为:" + i);
break;
}
}
if(i==1) System.out.println("这两个数没有最大公约数");
for (int j = Math.max(first, second); j < first * second; j++) {
if (j % first == 0 && j % second == 0) {
System.out.println("最小公倍数为:" + j);
break;
}
}
}
}