【算法实践】| 一步步手把手带你实现寻找最小公倍数

简介: 其实最小公倍数的概念和计算最小公倍数的方法.那是我们在学习小学数学的时候就已经掌握的数学知识,为了更加通俗易懂一点,本文先从一个'分元宝'的故事入手:亡故的先父留下遗嘱,共有遗产17个元宝,老大得元宝的二分之一、 17/2=8.5老二得元宝的三分之一、 17/3=5.66666老三得元宝的九分之一、 17/9=1.8问他们每一个人分别应该分几个元宝?在《一代大商孟洛川》中是这样做的孟洛川拿来一个元宝加上去好了,现在分元宝答案是:老大9个元宝、老二6个元宝、老三2个元宝。还剩下一个元宝,是我们孟洛川的,拿回来很不可思议吧很简单的初中数学题老大分1/2,老二分1/3,老三

前言

其实最小公倍数的概念和计算最小公倍数的方法.那是我们在学习小学数学的时候就已经掌握的数学知识,为了更加通俗易懂一点,本文先从一个'分元宝'的故事入手:

亡故的先父留下遗嘱,

共有遗产17个元宝,

老大得元宝的二分之一、 17/2=8.5

老二得元宝的三分之一、 17/3=5.66666

老三得元宝的九分之一、 17/9=1.8

问他们每一个人分别应该分几个元宝?

《一代大商孟洛川》中是这样做的

孟洛川拿来一个元宝加上去

好了,现在分元宝

答案是:老大9个元宝、老二6个元宝、老三2个元宝。

还剩下一个元宝,是我们孟洛川的,拿回来

很不可思议吧

很简单的初中数学题老大分1/2,老二分1/3,老三分1/9

这三个数的最小公倍数就是18,即9/18+6/18+2/18=17/18,就是说他们老爷子给的这个比例和根本就没到1,。即1-17/18=1/18,也就是说,直接分,那是分不完17元宝的。这样这要用18这个最小公倍数就能分开,最后还剩一个


很多人说数学学会四则混合运算就够了.其他买菜又用不到,这不,如果没有数学思维,连财产都分不明白(哈哈哈~),并不是除了四则混合运算其他数学知识没有用,而是我们没有学会或者不加以思考.其实很多时候我们在不知不觉中就已经使用了很多数学方法解决生活中所遇到的问题,所以学习数学,除了数学本身,还有数学思维的培养.言归正传,从上面的故事可看出最小公倍数对我们生产生活是有很大帮助的.故事中的例子就是分数的加减法运算在生活中的实际应用


网络异常,图片无法展示
|


概念


在上篇文章《【算法实践】| 一步步带你实现寻找最大公约数》中我们浅尝了最大公约数的计算,那最大公约数有没有什么联系呢?


最大公约数往往是和最小公倍数成对出现的.最小公倍数(Least Common Multiple,缩写L.C.M.),如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数,对于两个自然数来说,指该两数共有倍数中最小的一个。计算最小公倍数时,通常会借助最大公约数来辅助计算。


如果一个数既是a又是b的倍数,那么我们就把这个数叫着a和b的公倍数,如果这个数在a b的所有公倍数里为最小,那这个数就是最小公倍数。

通俗点说,几个数共有的倍数叫做这几个数的公倍数其中除0以外最小的一个公倍数,叫做这几个数的最小公倍数。自然数a、b的最小公倍数可以记作[a、b],自然数a、b的最大公约数(最大公因数)可以记作(a、b),当(a、b)=1时,[a、b]= a×b。如果两个数是倍数关系,则它们的最小公倍数就是较大的数,相邻的两个自然数的最小公倍数是它们的乘积。


简单概括如下:

最小公倍数:两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数


最大公约数最小公倍数二者关系:两个数之积=最小公倍数*最大公约数,这也可作为我们求解最小公倍数的入手点,但是解题时要避免和最大公约数问题混淆

还有另外一个入手点:


因为,素数(质数)是不能被1和自身数以外的其它数整除的数;素数X的N次方,是只能被X的N-1以下次方,1和自身数整除.


所以,在求A,B,C,D,E,…,Z的最小公倍数时,只需要把这些数分解为素数的N次方之间的乘积后,取各素因子的最高次方的乘积,就是这些数的最小公倍数.


适用范围


最小公倍数的适用范围:分数的加减法,中国剩余定理(正确的题在最小公倍数内有解,有唯一的解)


最小公倍数的计算方法


综上所述,求解最小公倍数有以下两种方法:

1.分解质因数法

先把这几个数的质因数写出来,最小公倍数等于它们所有的质因数的乘积,如果有几个质因数相同,则比较两数中哪个数有该质因数的个数较多,乘较多的次数即可。


2.公式法

由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×[a,b]=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。


计算流程


1.分解质因数(穷举法)


网络异常,图片无法展示
|


2.公式法


根据两者的关系,先计算最大公约数,然后使用公式计算最小公倍数


网络异常,图片无法展示
|


算法实现


1.分解质因数的实现步骤:(穷举法)

  1. 输入待求最小公倍数的两个整数x,y
  2. 找出两个整数中较大的一个数字,并记录为max
  3. 使用循环,判断max是否可以同时整除x和y,如果可以同时整除.退出循环,将max赋值给Flag,否则max加1,并且继续执行循环直到找到Flag
  4. 返回Flag,即x与y的最小公倍数


代码如下:

方法1

defLCM(x,y):
ifx>y:
max=xelse:
max=ywhile (True):
if((max%x==0) and (max%y==0)):
Flag=maxbreakmax=max+1returnFlagx=int(input("请输入第一个整数:"))
y=int(input("请输入第二个整数:"))
print(x,",", y, "的最小公倍数为:", LCM(x,y))


执行结果如下:

网络异常,图片无法展示
|


方法2:

deflcm(x, y):
#质因数分解Flag=1i=2whilei<=min(x, y):
ifx%i==0andy%i==0:
Flag*=ix, y=x//i, y//ielse:
i+=1Flag=Flag*x*yreturnFlagx=int(input("请输入第一个整数:"))
y=int(input("请输入第二个整数:"))
print(x,",", y, "的最小公倍数为:", lcm(x,y))


执行结果如下:

网络异常,图片无法展示
|


2.公式法具体实现步骤:


  1. 输入待求最小公倍数的两个整数x,y
  2. 计算两数的乘积s
  3. 计算最大公约数x,y=y,(x%y)  
  4. 根据公式两个数之积=最小公倍数*最大公约数,计算最小公倍数:s//y
  5. 输出最小公倍数


具体实现代码如下:

x=int(input("请输入第一个整数:"))
y=int(input("请输入第二个整数:"))
s=x*ywhilex%y!=0:
x, y=y, (x%y)
else:
print(x, ",", y, "的最大公约数为:",y)
print(x, ",", y, "的最小公倍数为:",s//y)


执行结果如下:

网络异常,图片无法展示
|

目录
相关文章
机器学习/深度学习 算法 自动驾驶
1403 0
|
9月前
|
算法 API 数据安全/隐私保护
深度解析京东图片搜索API:从图像识别到商品匹配的算法实践
京东图片搜索API基于图像识别技术,支持通过上传图片或图片URL搜索相似商品,提供智能匹配、结果筛选、分页查询等功能。适用于比价、竞品分析、推荐系统等场景。支持Python等开发语言,提供详细请求示例与文档。
|
12月前
|
监控 算法 安全
公司电脑监控软件关键技术探析:C# 环形缓冲区算法的理论与实践
环形缓冲区(Ring Buffer)是企业信息安全管理中电脑监控系统设计的核心数据结构,适用于高并发、高速率与短时有效的多源异构数据处理场景。其通过固定大小的连续内存空间实现闭环存储,具备内存优化、操作高效、数据时效管理和并发支持等优势。文章以C#语言为例,展示了线程安全的环形缓冲区实现,并结合URL访问记录监控应用场景,分析了其在流量削峰、关键数据保护和高性能处理中的适配性。该结构在日志捕获和事件缓冲中表现出色,对提升监控系统效能具有重要价值。
338 1
|
监控 算法 数据处理
基于 C++ 的 KD 树算法在监控局域网屏幕中的理论剖析与工程实践研究
本文探讨了KD树在局域网屏幕监控中的应用,通过C++实现其构建与查询功能,显著提升多维数据处理效率。KD树作为一种二叉空间划分结构,适用于屏幕图像特征匹配、异常画面检测及数据压缩传输优化等场景。相比传统方法,基于KD树的方案检索效率提升2-3个数量级,但高维数据退化和动态更新等问题仍需进一步研究。未来可通过融合其他数据结构、引入深度学习及开发增量式更新算法等方式优化性能。
309 17
|
存储 算法 安全
如何控制上网行为——基于 C# 实现布隆过滤器算法的上网行为管控策略研究与实践解析
在数字化办公生态系统中,企业对员工网络行为的精细化管理已成为保障网络安全、提升组织效能的核心命题。如何在有效防范恶意网站访问、数据泄露风险的同时,避免过度管控对正常业务运作的负面影响,构成了企业网络安全领域的重要研究方向。在此背景下,数据结构与算法作为底层技术支撑,其重要性愈发凸显。本文将以布隆过滤器算法为研究对象,基于 C# 编程语言开展理论分析与工程实践,系统探讨该算法在企业上网行为管理中的应用范式。
328 8
|
存储 监控 算法
基于 C# 时间轮算法的控制局域网上网时间与实践应用
在数字化办公与教育环境中,局域网作为内部网络通信的核心基础设施,其精细化管理水平直接影响网络资源的合理配置与使用效能。对局域网用户上网时间的有效管控,已成为企业、教育机构等组织的重要管理需求。这一需求不仅旨在提升员工工作效率、规范学生网络使用行为,更是优化网络带宽资源分配的关键举措。时间轮算法作为一种经典的定时任务管理机制,在局域网用户上网时间管控场景中展现出显著的技术优势。本文将系统阐述时间轮算法的核心原理,并基于 C# 编程语言提供具体实现方案,以期深入剖析该算法在局域网管理中的应用逻辑与实践价值。
308 5
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
2207 30
|
存储 算法
深入解析PID控制算法:从理论到实践的完整指南
前言 大家好,今天我们介绍一下经典控制理论中的PID控制算法,并着重讲解该算法的编码实现,为实现后续的倒立摆样例内容做准备。 众所周知,掌握了 PID ,就相当于进入了控制工程的大门,也能为更高阶的控制理论学习打下基础。 在很多的自动化控制领域。都会遇到PID控制算法,这种算法具有很好的控制模式,可以让系统具有很好的鲁棒性。 基本介绍 PID 深入理解 (1)闭环控制系统:讲解 PID 之前,我们先解释什么是闭环控制系统。简单说就是一个有输入有输出的系统,输入能影响输出。一般情况下,人们也称输出为反馈,因此也叫闭环反馈控制系统。比如恒温水池,输入就是加热功率,输出就是水温度;比如冷库,
2130 15
|
机器学习/深度学习 算法 数据建模
计算机前沿技术-人工智能算法-生成对抗网络-算法原理及应用实践
计算机前沿技术-人工智能算法-生成对抗网络-算法原理及应用实践

热门文章

最新文章