《算法零基础100讲》(第14讲) 最小公倍数
Posted 英雄哪里出来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《算法零基础100讲》(第14讲) 最小公倍数相关的知识,希望对你有一定的参考价值。
零、写在前面
这是《算法零基础100讲》 专栏打卡学习的第十四天了。
每天打卡的题,做不出来没关系,因为困难的题涉及知识点较多,后面还是会开放出来的,就像昨天的 最大公约数 那道题今天还是会有,所以不要着急,内容能看懂,能自己分析,能做出简单题,就可以打卡。
在刷题的过程中,总结自己遇到的坑点,写出 「 解题报告 」 供他人学习,也是一种自我学习的方式。这就是经典的帮助他人的同时,成就自己。目前, 「 万人千题 」 社区 每天都会有五六篇高质量的 「 解题报告 」 被我 「 加精 」。如果觉得自己有能力的,也可以来发布你的 「 解题报告 」。千万级流量,你我共同拥有。
一、概念定义
1、最小公倍数
两个数
a
a
a 和
b
b
b 的最小公倍数 (Leatest Common Multiple) 是指同时被
a
a
a 和
b
b
b 整除的最小倍数,记为
l
c
m
(
a
,
b
)
lcm(a, b)
lcm(a,b)。特殊的,当
a
a
a 和
b
b
b 互素时,
l
c
m
(
a
,
b
)
=
a
b
lcm(a, b) = ab
lcm(a,b)=ab。 以上是关于《算法零基础100讲》(第14讲) 最小公倍数的主要内容,如果未能解决你的问题,请参考以下文章 [解题报告]《算法零基础100讲》(第27讲) 字符串算法 - 高精度
在 最大公约数 这一节,我们已经学会了求解
g
c
d
gcd
gcd 的方法,而求
l
c
m
lcm
lcm 需要先求
g
c
d
gcd
gcd,然后容易得到:
l
c
m
(
a
,
b
)
=
a
b
g
c
d
(
a
,
b
)
lcm(a, b) = \\frac {ab} { gcd(a, b)}
lcm(a,b)=gcd(a,b)ab 根据算术基本定理,有如下公式满足:
a
=
p
1
x
1
p
2
x
2
p
3
x
3
.
.
.
p
k
x
k
b
=
p
1
y
1
p
2
y
2
p
3
y
3
.
.
.
p
k
y
k
a = p_1^{x_1}p_2^{x_2}p_3^{x_3}...p_k^{x_k} \\\\ b = p_1^{y_1}p_2^{y_2}p_3^{y_3}...p_k^{y_k}
a=p1x1p2x2p3x3...pkxkb=p1y1p2y2p3y3...pkyk 那么
g
c
d
(
a
,
b
)
gcd(a,b)
gcd(a,b) 和
l
c
m
(
a
,
b
)
lcm(a,b)
lcm(a,b) 可以表示成如下等式:
g
c
d
(
a
,
b
)
=
p
1
m
i
n
(
x
1
,
y
1
)
p
2
m
i
n
(
x
2
,
y
2
)
p
3
m
i
n
(
x
3
,
y
3
)
.
.
.
p
k
m
i
n
(
x
k
,
y
k
)
gcd(a,b)=p_1^{min(x_1,y_1)}p_2^{min(x_2,y_2)}p_3^{min(x_3,y_3)}...p_k^{min(x_k,y_k)}
gcd(a,b)=p1min(x1,y1)p2min(x2,y2)p3min(x3,y3)...pkmin(xk,yk)
l
c
m
(
a
,
b
)
=
p
1
m
a
x
(
x
1
,
y
1
)
p
2
m
a
x
(
x
2
,
y
2
)
p
3
m
a
x
(
x
3
,
y
3
)
.
.
.
p
k
m
a
x
(
x
k
,
y
k
)
lcm(a,b)=p_1^{max(x_1,y_1)}p_2^{max(x_2,y_2)}p_3^{max(x_3,y_3)}...p_k^{max(x_k,y_k)}
lcm(a,b)=p1max(x1,y1)p2max(x2,y2)p3max(x3,y3)...pkmax(xk,yk) 需要说明的是这里的
a
a
a 和
b
b
b 的分解式中的指数是可以为 0 的,也就是说
p
1
p_1
p1 是
a
a
a 和
b
b
b 中某一个数的最小素因子,
p
2
p_2
p2 是次小的素因子。
l
c
m
(
a
,
b
)
lcm(a, b)
lcm(a,b) 和
g
c
d
(
a
,
b
)
gcd(a, b)
gcd(a,b) 相乘,相当于等式右边的每个素因子的指数相加,即
m
i
n
(
x
i
,
y
i
)
+
m
a
x
(
x
i
,
y
i
)
=
x
i
+
y
i
min(x_i, y_i) + max(x_i, y_i) = x_i + y_i
min(xi,yi)+max(xi,yi)=xi+yi 正好对应了
a
a
a 和
b
b
b 的第
i
i
i 个素数分量的指数之和,从而得到: