目录
何为最小公倍数
题目要求
代码实现
方法一:暴力求解法(不推荐)
方法二:递乘试摸法(推荐)
何为最小公倍数
最小公倍数是指两个或者多个正整数(除了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
代码验证: