简单的求两个数的最小公倍数(另外一种思路)| Easy for find the least common multiple of two numbers (another way of thinking)
最小公倍数
题目描述
给定两个正整数 ,求最小公倍数(lcm)。这两个整数均在 int 范围内。
输入格式
两个整数 和 ,用空格分隔。
输出格式
两个整数表示答案,用空格隔开。
样例
样例输入
1 |
|
样例输出
1 |
|
思路
对于两个数,求其最小公倍数时,我们可以由性质,最小公倍数和最大公约数与两个数的关系求得(小的数*大的数=最小公倍数*最大公约数)。这里提供Eli了另外一种思路,除了穷举法外的另外一种思路。分三种情况:
- 大的数能直接被小的数整除,则大的数就是最小公倍数。
- 如果两个数同时满足被个位的2、3、5、7、9其中一个数整除,那么大的数在它的某个倍数时一定能被小数整除,而且这个大的数的倍数就是最小公倍数。例如8和12能够被2整除,有12*2/8=3,故最小公倍数为12*2。
- 如果两个数不能满足(2)能被整除的条件,则最小公倍数是两个数的乘积。
算法实现
1 |
|
不足
这个代码过于冗余,很多地方需要优化。总结下来,用性质解决和用此方法解决的时间复杂度都为O(n),但用性质解决代码量更少更简单。欢迎朋友们在评论区批评指正,谢谢!!!
感谢您的支持 | Thank you for supporting
简单的求两个数的最小公倍数(另外一种思路)| Easy for find the least common multiple of two numbers (another way of thinking)
http://example.com/2024/05/08/least-common-multiple/