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

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 HOW求两个数的最小公倍数?,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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

——————————————————–求最小公倍数

1.暴力求解法

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

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

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

下面看代码:

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

 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两个数谁大谁小都是没问题的。主要就是这个循环怎么写呢?

下面看代码:

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

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

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

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

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

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/128554.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!