c语言最大公约数和最小公倍数_C语言编程实例49

问题描述

求任意两个正整数的最小公倍数(LCM)。

问题分析

最小公倍数(Least Common Multiple,LCM),如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数,对于两个整数来说,指该两数共有倍数中最小的一个。计算最小公倍数时,通常会借助最大公约数来辅助计算。最小公倍数=两数的乘积/最大公约(因)数,解题时要避免和最大公约(因)数问题混淆。对于最小公倍数的求解,除了利用最大公约数外,还可根据定义进行算法设计。要求任意两个正整数的最小公倍数即,求出一个最小的能同时被两整数整除的自然数。

算法设计

对于输入的两个正整数m和n每次输入的大小顺序可能不同,为了使程序具有一般性,首先对整数所m和n进行大小排序,规定变量m中存储大数、变量n中存储小数。输入的两个数,大数m是小数n的倍数,那么大数m即为所求的最小公倍数;若大数m不能被小数n整除则需要寻找一个能同时被两数整除的自然数。从大数m开始依次向后递增直到找到第一个能同时被两数整除的数为止,所以循环变量i的初值为寻找第一个能同时被两整数整除的自然数,并将其输出。需要注意的是,在找到第一个满足条件的i值后,循环没必要继续下去,所以用break来结束循环。在上面的分析过程中没有提到循环变量的终止条件,因i的最大值不能确定,像这种终止条件不确定的情况如何来表示?方法有两种,第一,可以把判定条件表示成循环变量满足的基本条件,如本例终止条件可表示成i>0;第二,终止条件省略不写,利用循环体中的语句结束循环,如在找到第一个满足条件的自然数时利用break语句结束循环。下面是完整的代码:

#includeint main(){    int m, n, temp, i;    printf("Input m & n:");    scanf("%d%d", &m, &n);    if(m/*比较大小,使得m中存储大数,n中存储小数*/    {        temp = m;        m = n;        n = temp;    }    for(i=m; i>0; i++)  /*从大数开始寻找满足条件的自然数*/        if(i%m==0 && i%n==0)        {/*输出满足条件的自然数并结束循环*/            printf("The LCW of %d and %d is: %d\n", m, n, i);            break;        }       return 0;}

运行结果:Input m & n:6 24The LCW of 24 and 6 is: 24

扫码关注我,手把手带你撸代码 a46de7be7505a02dfb08c0df908b678b.png

如果你觉得文章让您增长了知识,

请点击右下方的“在看

   dccc51373d2a54799c6b3d252ab696da.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值