当前位置: 首页 > article >正文

【C语言经典例题】求最小公倍数

一、题目要求

输入:两个整数

输出:这两个整数的最小公倍数

二、解题思路

求最小公倍数的方法,我这里提供两种较为便捷的思路

解法一

完整代码

代码如下,接下来我来讲解这串代码一些细节的地方

int main()
{
    //输入
    int a = 0;
    int b = 0;
    scanf("%d %d", &a, &b);

    //求最小公倍数m
    int m = a>b?a:b; 
    while(m%a != 0 || m%b!=0)
    {
        m++;
    }*/

    //打印
    //printf("%d\n", m);

    return 0;
}

代码细节剖析

值得注意的是,这种写法中,m的取值用到了 三目操作符 

                               int m = a>b?a:b

这里的意思是:

        如果 a > b , m的值就为 a ;

        如果 a < b , m的值就为 b .

另外,这种写法的最小公倍数 m ,是如何算出来的呢?

我们可以看到用了 while 循环,并且只要 m 对 a 和 b 同时取模,并且当两个结果都为零时,m就为 a , b 的最小公倍数了

这种写法理解起来不难,因为是直接按照最小公倍数的定义写出来的:

两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。

解法二

完整代码

int main()
{
    //输入
    int a = 0;
    int b = 0;
    scanf("%d %d", &a, &b);

    //求最小公倍数
    int i = 1;
    while (i * a % b != 0)
    {
        i++;
    }

    //打印
    printf("%d\n", i * a);
    return 0;
}

代码思路剖析

这串代码在写法上没有什么需要特别注意的地方,重点在于思路上,下面请看思路剖析:

先创建变量 i ,利用 while 循环实现:

当 i * a 的结果去对 b 进行取模运算时 ,如果结果不等于 0 ,则 i++;

如果结果等于零 ,那么 i * a 的值即为 a 和 b 的最小公倍数

关于这一步可以这样理解:等到 i * a 的值大到能整除 b 时,此时的 i * a ,即为 b 的倍数,同时, 又是 a 的 i 倍,因此也就是 a 和 b 的最小公倍数了

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!


http://www.kler.cn/a/1307.html

相关文章:

  • 互联网架构变迁:从 TCP/IP “呼叫” 到 NDN “内容分发” 的逐浪之旅
  • @LocalBuilder装饰器: 维持组件父子关系
  • 2025年第三届“华数杯”国际赛A题解题思路与代码(Matlab版)
  • android源码编译后,为什么emulator一直黑屏或者停止android界面
  • 10_Redis数据结构-HyperLogLog基数统计
  • 目标检测中的Bounding Box(边界框)介绍:定义以及不同表示方式
  • 长肥网络与TCP的长肥管道
  • 漫画:什么是选择排序?
  • 比df更好用的命令!
  • 一行代码“黑”掉任意网站
  • 关键字 const
  • 没有关系的话,那就去建立关系吧
  • 各种交叉编译工具链的区别
  • 【宝塔面板部署nodeJs项目】网易云nodeJs部署在云服务器上,保姆级教程,写网易云接口用自己的接口不受制于人
  • 第一个 Qt 程序
  • 数论作业 —— 公约数公倍数问题
  • 【数据结构】还不懂算法复杂度?一文带你速解
  • 【linux】多线程概念详述
  • OpenCV实战——拟合直线
  • 7个最受欢迎的Python库,大大提高开发效率
  • 设计模式之单例模式~
  • 9. C#面向对象基础
  • 同一片天空共眠,同一个梦想奋斗《大抠车始歌》(1)
  • Nacos 注册中心 - 健康检查机制源码
  • jupyter的安装和使用
  • 10 个超赞的 C 语言开源项目