求最小公倍数
两个数公有的倍数叫做这两个数的公倍数,其中最小的一个,叫做最小公倍数
首先思考🤔,最小公倍数有可能是两数之间较大的一个。 a , b
若不是,则只能是比两数都大的数。最小公倍数记为m
m%a==0;
m%b==0;
假设a是较大的数
如果a能直接被b整除,
那么a就是这两个数的最小公倍数
若不能,就对a逐次加1并赋值给m,直到能被b整除。
例如
a=40 b=20
m=40
根据这个逻辑来编写代码
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
int m = a > b ? a : b;
while (1)
{
if (m % a == 0 && m % b == 0)
{
break;
}
m++;
}
printf("最小公倍数->%d\n", m);
return 0;
}
此方法过程太过繁琐,换另一种思考方式
既然是求最小公倍数,一定存在正整数 i j 使下列式子成立
a*i==b*j==m
所以只需要对i逐次加1,直到能被b整除
此时 m==a*i
代码实现如下
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
int i = 1;
//当a*i%b==0时,不进入循环,
//此时最小公倍数就是a*i
while (a * i % b)
{
i++;
}
printf("最小公倍数->%d\n", a * i);
}