HOW求两个数的最小公倍数?

简介: HOW求两个数的最小公倍数?

前言:上一篇我们讲了求两个数的最大公约数;这一篇我们来讲讲怎么求最小公倍数?


--------------------------------------------------------求最小公倍数


1.暴力求解法


解析:这个方法的思路是和求最大公约数的思路是类似的;两个数(暂定m, n)的最大公约数必然>=两个数之间的最大数(暂定max);那么:


第一步:我们就要求出两个数之间的最大数;当然也是用三目运算符比较简单!!!


第二步:我们就要写个死循环while(1),直到(max%m == 0 && max%n == 0 )才跳出循环;如果没满足上面的条件,就让max++;继续执行循环;直到满足条件,break跳出循环就好啦。


下面看代码:


e637209780144a3dae9a7e9ee5ba6370.png 2.试乘取余法


解析:同样暂定两个数(m, n);最小公倍数肯定是这个数(暂定为tmp);tmp%m == 0 && tmp %n ==0 条件都是满足的;那么我们反过来想,就是(m*一个数)%n == 0 必然是满足条件的;例如:


1. 如果m>n;m=20  n=15;m*(一个数(i),这个数是从1开始的,每次循环+1)%n == 0;我们需要找这个满足条件的数,这里就可以看出,数 i=3 满足条件,此时(m*i) % n=====>(20*3) % 15 == 0 ;在打印出m*i即可。


2. 如果m<n;m=15  n=20;也是和上面的思路一样的,不过此时,数 i=4 才满足条件,此时(m*i) % n=====>(15*4) % 20 == 0 ;在打印出m*i即可。


所以,不论m , n两个数谁大谁小都是没问题的。主要就是这个循环怎么写呢?


下面看代码:


85483b91cf02468589f69ad2887be0d3.png


3.先求出最大公约数,再求最小公倍数


解析:我们是否想过两个数(m,n)的最大公约数和最小公倍数,四者之间有什么关系呢?下面直接给出结果吧!!!


最小公倍数 = (m*n) / 最大公约数 ;如果不太理解,可以自己举两个具体的数,带入验证一下


例如:m=8  n=12 ====>其最大公约数是:4 ;那么最小公倍数就是:(m*n) /4  = 24;完全是没问题的;所以这里方法就多了,你有多少方法求最大公约数,你就至少有多少种方法求最小公倍数;但它们总的来说,都是一类;下面看其中一个方法:

52041f1d7a91455c8c5eb9f5fd6f6daf.png

注意: 咦,在第二步,我为什么又创建两个临时变量tmp_m = m ,   tmp_n = n;直接用原来的数不就好了吗?但是我们最终打印的结果用到了原来的数据(m ,n);如果直接使用数据,经过循环,m和n的值是一直变化的,怎么找到原来m,n的值?所以你想明白了吗?

       

当然你也可以在刚开始的输入两个数后,就定义一个变量(int ret = m* n);记住初始的状态,这样就不用在定义临时变量直接用就可以了,最终打印 (ret / n)就可以了;这个留给读者自己去操作吧。


建议:如果你写的代码没有达到你预想的结果,比如上面这个例题,怎么办?去问别人或者百度?


当然是说no;最好的方法就是要自己去调试啦!!!在调试中你就会发现你的错误,而且更加的印象深刻,不要盲目询问;效率并不高!!!!

 

好了,到此为止,我目前已知的三种方法讲完了,你学到了吗?这是我写的第二遍博客,通过这两篇的试水,已经渐渐熟悉了;以后开始正式写博客,由浅入深,由简到难;欢迎交流学习!

相关文章
|
2月前
|
算法
给定两个数,求这两个数的最大公约数
给定两个数,求这两个数的最大公约数
|
9月前
|
算法
求1000以内所有的水仙花数
求1000以内所有的水仙花数
|
6月前
628. 三个数的最大乘积
628. 三个数的最大乘积
|
8月前
|
C++
c/c++求两个数的最大公约数(递归版)
c/c++求两个数的最大公约数(递归版)
128 0
|
11月前
|
索引
三个数的最大乘积
三个数的最大乘积
43 0
|
11月前
|
Python
找几个数的最大乘积
找几个数的最大乘积
42 0
|
11月前
找出水仙花数
找出水仙花数
51 0
|
11月前
|
算法
求水仙花数
求水仙花数
51 0
|
12月前
7-150 水仙花数
7-150 水仙花数
36 0
|
机器学习/深度学习 人工智能 算法
能被整除的数
能被整除的数
能被整除的数