求最小公倍数的三种方法以及对求最大公因数的补充 C语言从入门到入土(入门篇)(算法篇p4)

目录

求最小公倍数的三种方法

求最大公因数的补充:


谁都不能阻挡你成为更优秀的人。

废话不多说,直接上代码。

求最小公倍数的三种方法

//法一:暴力(定义)求解
//最小公倍数的本质是一个最小的能同时被两整数整除的自然数
int main()
{
	int m = 0;
	int n = 0;
	scanf("%d%d", &m, &n);
	int a = 0;

	a = ((m) > (n)) ? (m) : (n);

	while (1)
	{
		if ((a % m == 0) && (a % n == 0))
		{
			break;
		}
		a++;
	}
	printf("%d", a);
	return 0;
}
//法二:

int main()
{
	int m = 0;
	int n = 0;
	int i = 1;
	scanf("%d%d", &m, &n);		 //当然这里也可以是
	while (((m * i) % n) != 0)   // m*i%n
	{
		i++;
	}
	printf("%d", m*i);  //注意这里
	return 0;
}
//法三:最大公因数求解
//如求 3 12  最小公倍数 就是  3*12/3(最大公因数),
//     3  5  最小公倍数 就是  3*5/1 。

int main()
{
	int m = 0;
	int n = 0;
	int c = 0;
	int a = 0;
	int b = 0;
	scanf("%d%d", &m, &n);
	a = m;
	b = n;
	while (c=a%b)
	{
		a = b;
		b = c;
	}
	//注意这里只有b才是最大公因数,这是辗转相除法规定的,
	//当然你也可以说是欧几里得法更帅不是嘛哈哈。
	printf("%d",m*n/b);
	return 0;
}

求最大公因数的补充:

//求最大公因数的两个补充,上面已经说到了辗转相除,
//这里就不过多赘述了。
//法一:更相减损法
//简单说:大的减小的,直到减数和差相等
int main()
{
	int m = 0;
	int n = 0;
	scanf("%d%d", &m, &n);
	
	while ((m - n) != 0)
	{
		if (m > n)
		{
			m=m - n;
		}
		else
		{
			n=n - m;
		}
	}
	printf("%d", m);//n也行
	return 0;
}
//法二:穷举法
//从两个数较小的数开始减,直到都能除尽。
int main()
{
	int m = 0;
	int n = 0;
	scanf("%d%d", &m, &n);
	int c = 0;

	c = ((m) < (n)) ? (m) : (n);
	for (c; c >= 1; c--)
	{
		if ((m % c == 0) && (n % c == 0))
		{
			printf("%d", c);
			break;
		}

	}
	return 0;
}

最后:感谢您的观看!

           感谢您的支持!

如果没有关注的话就来个关注吧!你的支持是作者写作的最大动力!

谢谢!!!

猜你喜欢

转载自blog.csdn.net/weixin_62700590/article/details/121617961