【C语言】求最小公倍数的3种方法

大家好,我是苏貝,本篇博客带大家了解C语言求最小公倍数的3种方法,如果大家觉得我写的不错的话,可以给我一个赞吗,感谢❤️


描述:正整数A和正整数B的最大公倍数是指 能被A和B整除 的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。 数据范围: 1 < a,b < 100000

示例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;
}

好了,那么本篇博客就到此结束了,如果你觉得本篇博客对你有些帮助,可以给个大大的赞吗,感谢看到这里,我们下篇博客见❤️

你可能感兴趣的:(c语言,算法,数据结构)