起始
我们在解决一些计算问题时,可能会遇到一些基础的数学问题,下面介绍几种这类问题,一起分享学习下。
求两个整数 a, b 的最大公约数
早在古希腊,一位数学大牛-欧几里得就通过简单易懂的方法求得了两数的最大公约数,为了看起来数学功底不错,
这里表示成 (a,b),这种方法通常叫做辗转相除法。
gcd(a, b) = gcd(b, a mod b)
我们用一段 python 代码来表示:
# gcd means "greatest common divisor"
def gcd(a:int, b:int) -> int:
while b != 0:
t = b
b = a%t # mod(a,b)
a = t
return a
求两个整数 a, b 的最小公倍数
两个数的最小公倍数我们以 [a, b] 来表示,那么有一个基础的数学公式, a*b = [a, b] * (a, b),那么我们就可以根据之前求得的最大公约数来求取最小公倍数了。
我们还是用一段 python 代码来表示:
# lcm means "least common multiple"
def lcm(a:int, b:int) -> int:
m = a * b
x = gcd(a, b)
return m // x
关于最大公约数和最小公倍数的求取希望能给小伙伴以启发,欢迎一起交流学习。