目录
何为最小公倍数
题目要求
代码实现
方法一:暴力求解法(不推荐)
方法二:递乘试摸法(推荐)
何为最小公倍数
最小公倍数是指两个或者多个正整数(除了0以外)的最小的公共倍数
题目要求
输入两个正整数; 如:输入:5 7
输入最小公倍数; 如:输出:35
代码实现
方法一:暴力求解法(不推荐)
#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;
		else
			m++;
	}
	//输出
	printf("m = %d", m);
	return 0;
} 
代码解析:
解析:int m = a > b ? a : b;
求出 变量a、b 的较大值,存储到 变量m ,并将 变量m 假设为 变量a、b 的最小公倍数
解析:while循环
如果 变量m 取模 变量a、b 的结果同时为 0 时,那么此时的 变量m 就是 变量a、b 的最小公倍数
如果取模结果不为 0 时,那么 变量m 就自增1,直到能同时取模为 0 为止
代码验证:
代码缺点:
当输入的两个正整数接近了整型能表示的最大范围时,那么这两个正整数的最小公倍数一定会超出整型能表示的最大范围
方法二:递乘试摸法(推荐)
#include<stdio.h>
int main()
{
	//输入
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	//计算最小公倍数
	int i = 1;
	while ((a * i) % b)
		i++;
	//输出
	printf("%d\n", i * a);
	return 0;
} 
代码解析:
解析:int i = 1;
解析:while ((a * i) % b)
举例说明:
35 / 5 = 7
35 / 7 = 5
创建一个 整型变量i ,用来递乘 变量a 或者 变量b
当 变量a 乘以 整型变量i 后,再取模 变量b,如果结果为 0 ,那就说明 a*i 就是 变量a、b的最小公倍数(变量b同样如此)
如果结果不为 0 时,递增 变量i,直到取模结果为0
代码验证:




![【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 游乐园门票 (200分) - 三语言AC题解(Python/Java/Cpp)](https://i-blog.csdnimg.cn/direct/a5194b8227494fa5bd1455549b1beda3.png)














