提示:以下是本篇文章正文内容,下面案例可供参考
一、提前说明
1.最大公约数(GCD)
2.最小公倍数(LCM)
3.从 Python 3.5 开始,math 模块提供了 math.gcd() 函数,可以直接计算两个数的最大公约数。
4.最小公倍数可以通过公式 LCM(a, b) = abs(a * b) // GCD(a, b) 来计算。
二、实现
1.GCD
(1)快速上手,内置函数
import math
print(math.gcd(12,18))
(2)自己实现,理解原理
欧几里得算法(辗转相除法)
计算最大公约数的高效方法。其原理是基于以下性质:
G
C
D
(
a
,
b
)
=
G
C
D
(
b
,
a
%
b
)
GCD(a,b)=GCD(b,a\%b)
GCD(a,b)=GCD(b,a%b)
一直进行到b=0,即GCD(a,0)的形式,返回a,即为最大公约数。
本文作为小白学习笔记,详细过程请自行查阅。
实现代码:
def gcd(x,y):
while y:
x,y=y,x%y
return x
gcd(18,12)
2.LCM
补充:LCM可以转化成GCD问题,通过下列公式求解
L
C
M
(
a
,
b
)
=
a
b
s
(
a
∗
b
)
/
/
G
C
D
(
a
,
b
)
LCM(a, b) = abs(a * b) // GCD(a, b)
LCM(a,b)=abs(a∗b)//GCD(a,b)
(1)快速上手,内置函数
import math
gcd=math.gcd(18,12)
lcm = (18*12) // gcd
print(lcm)
(2)自己实现,理解原理
实现代码:
def gcd(x,y):
while y:
x,y=y,x%y
return x
def lcm(x,y):
result=abs(x*y) // gcd(x,y)
return result
print(lcm(18,12))
总结
1.GCD:
G
C
D
(
a
,
b
)
=
G
C
D
(
b
,
a
%
b
)
GCD(a,b)=GCD(b,a\%b)
GCD(a,b)=GCD(b,a%b)
一直进行到b=0,即GCD(a,0)的形式,返回a,即为最大公约数。
2.LCM:(转化成GCD)
L
C
M
(
a
,
b
)
=
a
b
s
(
a
∗
b
)
/
/
G
C
D
(
a
,
b
)
LCM(a, b) = abs(a * b) // GCD(a, b)
LCM(a,b)=abs(a∗b)//GCD(a,b)
声明:
本文为本人的学习笔记,旨在记录和分享个人在学习过程中的心得体会和原创代码。由于本人刚入门,对相关知识的理解可能还存在不足之处,文章中难免会有错误或不准确的地方。在此,我诚挚地欢迎各位读者在阅读过程中,如果发现任何问题或有其他建议,随时在评论区或通过其他方式与我交流。我将虚心听取大家的意见,及时修正和改进文章内容,以便更好地学习和成长。感谢大家的关注和支持!