关于求最小公倍数的三种常用方法

简介: 关于求最小公倍数的三种常用方法

前言


相信大家都刷到过这种题吧,输入两个数,求出两个数的最小公倍数,我总结归纳了三种方法,希望能帮到大家。


方法一


#include<stdio.h>
void min(int a,int b)
{
  long long max = (a > b ? a : b);
  for (max; max <= a * b; max++)
    if (max % a == 0 && max % b == 0)
      break;
  printf("%lld", max);
}
int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d", &a, &b);
  min(a, b);
  return 0;
}


我们都知道,最小公倍数是大于等于两个数的较大数,小于等于两数相乘。

因此先求出两个数的最大值,再在最大值的基础上依次加一,来找出最小公倍数。


方法二


#include<stdio.h>
void min(int a, int b)
{
  int m = (a < b ? a : b);
  for (m; m > 0; m--)
    if (a % m == 0 && b % m == 0)
      break;                  //求出最大公约数 m
  long long p = a * b / m;
  printf("%lld", p);     
}
int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d", &a, &b);
  min(a, b);
  return 0;
}


我们知道最大公倍数还可以利用两数相乘再除以最大公约数来求,我们利用两数的最小值来依次减一,来找到最大公约数。


当然了,我们也可以用辗转相除法来求出最大公约数,代码如下:

#include<stdio.h>
void min(int a, int b)
{
  int m = a;        //先将 a , b 存起来
  int n = b;
  while (a % b)    //辗转相除,最后 b 即为最大公约数
  {
    int f = a % b;
    a = b;
    b = f;
  }
  long long p = m * n / b;
  printf("%lld", p);   
}
int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d", &a, &b);
  min(a, b);
  return 0;
}


方法三(最优解)


我们先来理一下思路吧,假设 k 是最小公倍数,那么下面两个式子必然成立,

k / a = i

k / b = j

那么我们可以推出 —> a * i % b=0

那么我们可以将 i 从 1 开始加起直到满足上式,即可求出最小公倍数为 a * i

我们可以写出如下代码:

#include<stdio.h>
int main()
{
  long long a = 0;
  long long b = 0;
  scanf("%lld %lld", &a, &b);
  int i = 1;
  while (a * i % b)
  {
    i++;
  }
  printf("%lld", a * i);
  return 0;
}

以上便是本期全部内容了,如果对您有帮助还请多多支持哦,文章有误还请批评指出,下期见啦~


相关文章
|
监控 算法 Go
Golang深入浅出之-Go语言中的服务熔断、降级与限流策略
【5月更文挑战第4天】本文探讨了分布式系统中保障稳定性的重要策略:服务熔断、降级和限流。服务熔断通过快速失败和暂停故障服务调用来保护系统;服务降级在压力大时提供有限功能以保持整体可用性;限流控制访问频率,防止过载。文中列举了常见问题、解决方案,并提供了Go语言实现示例。合理应用这些策略能增强系统韧性和可用性。
909 0
|
存储 SQL 弹性计算
圆桌讨论:如何构建一站式全链路解决方案
本文整理自天翼云首席研发专家候圣文,OceanBase社区布道师周跃跃,CloudCanal联合创始人万凯明,StarRocks解决方案架构师王天宜,在如何构建简单高效的现代化数据栈的分享。
圆桌讨论:如何构建一站式全链路解决方案
|
4月前
|
安全 应用服务中间件 网络安全
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
259 0
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
|
7月前
|
安全 关系型数据库 Java
Debian 12.10 “Bookworm” 发布 - 通用操作系统
Debian 12.10 发布于 2025 年 3 月 15 日,常规安全更新和错误修复。
645 13
Debian 12.10 “Bookworm” 发布 - 通用操作系统
|
11月前
|
人工智能 自然语言处理 搜索推荐
浪潮信息 Yuan-embedding-1.0 模型登顶MTEB榜单第一名
浪潮信息Yuan-Embedding-1.0模型在C-MTEB评测基准中荣获Retrieval任务第一名,推动中文语义向量技术发展
1534 7
浪潮信息 Yuan-embedding-1.0 模型登顶MTEB榜单第一名
2022最新最详细必成功的在Vscode中设置背景图、同时解决不受支持的问题
这篇文章提供了在VScode中设置背景图的详细步骤,包括下载background插件、编辑setting.json文件、配置背景样式,并解决了设置后出现的不支持提示的问题。
2022最新最详细必成功的在Vscode中设置背景图、同时解决不受支持的问题
|
11月前
|
机器学习/深度学习 人工智能 TensorFlow
深入浅出:用深度学习识别手写数字
【10月更文挑战第32天】在这篇技术性文章中,我们将以浅显易懂的方式探索深度学习的奥秘,并带领读者通过一个实际项目——手写数字识别来实践理论知识。文章不仅介绍了深度学习的基本概念和关键技术,还提供了详细的代码示例,帮助初学者快速入门并理解深度学习的强大之处。无论你是编程新手还是对深度学习感兴趣的技术爱好者,这篇文章都将为你打开一扇通往人工智能世界的大门。
|
安全 Java
java.security.InvalidKeyException: Illegal key size
java.security.InvalidKeyException: Illegal key size
277 0
|
监控 安全 网络安全
防火墙和入侵检测系统
【8月更文挑战第16天】
560 1