大家好,我是苏貝,本篇博客带大家了解C语言求最小公倍数的3种方法,如果大家觉得我写的不错的话,可以给我一个赞吗,感谢❤️
示例1 :输入: 5 7输出: 35
示例2 :输入: 2 4输出: 4
方法一:
先判断a和b中较大的那个数并赋值给m,判断m是否能被a和b整除 ,若不能则m一直+1,直到m能被a和b整除
(此方法不推荐,效率低)
#include
int main()
{
long int a, b;
scanf("%ld%ld", &a, &b);
long int m = a > b ? a : b;//求较大值
long int i = m;
for (i = m;; i++)
{
if ((i % a == 0) && (i % b == 0))
break;
}
printf("%ld", i);
return 0;
}
方法二:
先通过辗转相除法求出a和b的最大公约数,再通过最小公倍数=a*b/最大公约数求出最小公倍数
#include
int main()
{
long int a, b;
scanf("%ld%ld", &a, &b);
long int i;
long int m = a * b;
while (i = a % b)
{
a = b;
b = i;
}
m /= b;//b为最大公约数
printf("%ld", m);
return 0;
}
方法三:
i从1开始,如果 i*a 可以被b整除,则 i*a是最小公倍数,如果不能被整除,则i++,继续判断 i *a是否可以被b整除。
例如:求3和5的最小公倍数。3 *1=3不能被b整除,i++变成2;3 *2=6不能被b整除,i++变成3;3 *3=9不能被b整除,i++变成4;3 *4=12不能被b整除,i++变成5;3 *5=15能被b整除,则3 *5是 3和5 的最小公倍数
#include
int main()
{
long int a, b;
scanf("%ld%ld", &a, &b);
long int i=1;
while (a * i % b != 0)
i++;
long int m = i * a;
printf("%ld", m);
return 0;
}