【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 的最小公倍数了

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

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲代码的罗根

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值