【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 的最小公倍数了
以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!