华为-求最小公倍数
(java实现)
题目描述:
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
输入描述:
输入两个正整数A和B。
输出描述:
输出A和B的最小公倍数。
示例1:
输入
5 7
输出
35
问题分析:
两种思路
思路一:分别求出两个数的约数,然后再删除重复的约数,最后将去重后的约数相乘,所得即是最小公倍数。
思路二:两数相乘,再除以最大公约数,所得即是最小公倍数。但关键点在于求最大公约数,这个可以使用连续求余数法(具体数学定理)。
参考代码是依据思路二来实现的。
相关知识:
略
算法实现:
略
参考代码:
import java.util.*; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int na = input.nextInt(); int nb = input.nextInt(); int maxDivisor = getMaxDivisor(na,nb); System.out.println(na*nb/maxDivisor); } public static int getMaxDivisor(int na, int nb) { int tmp; if (na < nb) { tmp = na; na = nb; nb = tmp; } while(na%nb != 0) { tmp = na%nb; na = nb; nb = tmp; } return nb; } }