目录
- 一、一些符号和等式
- 二、狄利克雷卷积
- 三、莫比乌斯反演
- 四、经典式子的推导
- 1. ∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = 1 ] \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}[gcd(i,j)=1] i=1∑nj=1∑n[gcd(i,j)=1]
- 2. ∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = k ] \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}[gcd(i,j)=k] i=1∑nj=1∑n[gcd(i,j)=k]
- 3. ∑ i = 1 n ∑ j = 1 n g c d ( i , j ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} gcd(i, j) i=1∑nj=1∑ngcd(i,j)
- 4. ∑ i = 1 n ∑ j = 1 n l c m ( i , j ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} lcm(i, j) i=1∑nj=1∑nlcm(i,j)
- 5. ∑ i = 1 n ∑ j = 1 n i j g c d ( i , j ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} ijgcd(i, j) i=1∑nj=1∑nijgcd(i,j)
- 五、拓展提高
- 1. ∑ i = 1 N ∑ j = 1 N l c m ( a i , a j ) \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i, a_j) i=1∑Nj=1∑Nlcm(ai,aj)
- 2. ∑ i = 1 n l c m ( i , n ) \displaystyle\sum_{i = 1} ^ {n} lcm(i, n) i=1∑nlcm(i,n)
- 3. ∑ i = 1 N g c d ( ⌊ i 3 ⌋ , i ) \displaystyle\sum_{i = 1} ^ {N} gcd\left( \lfloor \sqrt[3]{i} \rfloor, i \right) i=1∑Ngcd(⌊3i⌋,i)
一、一些符号和等式
1.
a
∣
b
1.a|b
1.a∣b意为
a
a
a整除
b
b
b
2.
[
a
=
b
]
=
{
1
,
a
=
b
0
,
a
≠
b
2.[a=b]=\begin{cases} 1,a=b\\0,a ≠b \end{cases}
2.[a=b]={1,a=b0,a=b
3.
⌊
a
⌋
3.\lfloor a \rfloor
3.⌊a⌋意为对
a
a
a向下取整
4.
⌊
⌊
n
/
d
⌋
k
⌋
=
⌊
n
d
k
⌋
4.\lfloor \frac{\lfloor n/d \rfloor}{k} \rfloor = \lfloor \frac{n}{dk} \rfloor
4.⌊k⌊n/d⌋⌋=⌊dkn⌋
二、狄利克雷卷积
关于狄利克雷卷积,请戳这里
然后莫比乌斯反演中需要知道的是
φ
\varphi
φ为欧拉函数,
μ
\mu
μ为莫比乌斯函数,
i
d
(
n
)
=
n
id(n)=n
id(n)=n,
ε
(
n
)
=
[
n
=
1
]
\varepsilon(n)=[n=1]
ε(n)=[n=1],
I
(
n
)
=
1
I(n)=1
I(n)=1
①
φ
∗
I
=
i
d
\varphi*I=id
φ∗I=id
②
μ
∗
I
=
ε
\mu*I=\varepsilon
μ∗I=ε
在①等式两边同时
∗
μ
*\mu
∗μ,我们可以得到
φ
∗
I
∗
μ
=
μ
∗
i
d
\varphi*I*\mu=\mu*id
φ∗I∗μ=μ∗id
再根据②,我们有
φ
∗
ε
=
μ
∗
i
d
\varphi*\varepsilon=\mu*id
φ∗ε=μ∗id
对于任意数论函数都有
f
=
f
∗
ε
f=f*\varepsilon
f=f∗ε,故最终我们有:
③
μ
∗
i
d
=
φ
\mu*id=\varphi
μ∗id=φ
这里面③是非常重要的,它揭示了欧拉函数和莫比乌斯函数的关系,在有些式子的化简当中起到至关重要的作用
三、莫比乌斯反演
对于莫比乌斯反演的题目,我们只要记住上面的①式就行,写开之后就是这样
∑
d
∣
n
μ
(
d
)
=
[
n
=
1
]
\displaystyle\sum_{d|n}\mu(d)=[n=1]
d∣n∑μ(d)=[n=1]
那么
[
g
c
d
(
i
,
j
)
=
1
]
[gcd(i,j)=1]
[gcd(i,j)=1]就有
∑
d
∣
g
c
d
(
i
,
j
)
μ
(
d
)
=
[
g
c
d
(
i
,
j
)
=
1
]
\displaystyle\sum_{d|gcd(i,j)}\mu(d)=[gcd(i,j)=1]
d∣gcd(i,j)∑μ(d)=[gcd(i,j)=1]
亦可以写作
∑
d
∣
i
,
d
∣
j
μ
(
d
)
=
[
g
c
d
(
i
,
j
)
=
1
]
\displaystyle\sum_{d|i,d|j}\mu(d)=[gcd(i,j)=1]
d∣i,d∣j∑μ(d)=[gcd(i,j)=1]
再做一下拓展求
[
g
c
d
(
i
,
j
)
=
k
]
[gcd(i,j)=k]
[gcd(i,j)=k]
因
[
g
c
d
(
i
,
j
)
=
k
]
⇔
[
g
c
d
(
i
k
,
j
k
)
=
1
]
[gcd(i,j)=k]\Leftrightarrow[gcd(\frac{i}{k},\frac{j}{k})=1]
[gcd(i,j)=k]⇔[gcd(ki,kj)=1],故有
∑
d
∣
i
k
,
d
∣
j
k
μ
(
d
)
=
[
g
c
d
(
i
,
j
)
=
k
]
\displaystyle\sum_{d|\frac{i}{k},d|\frac{j}{k}}\mu(d)=[gcd(i,j)=k]
d∣ki,d∣kj∑μ(d)=[gcd(i,j)=k]
四、经典式子的推导
1. ∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = 1 ] \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}[gcd(i,j)=1] i=1∑nj=1∑n[gcd(i,j)=1]
推导过程
∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = 1 ] = ∑ i = 1 n ∑ j = 1 n ∑ d ∣ i , d ∣ j μ ( d ) = ∑ d = 1 n μ ( d ) ∑ d ∣ i ∑ d ∣ j 1 = ∑ d = 1 n μ ( d ) ∑ i = 1 ⌊ n / d ⌋ ∑ j = 1 ⌊ n / d ⌋ 1 = ∑ d = 1 n μ ( d ) ⌊ n d ⌋ 2 \begin{aligned} \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}[gcd(i,j)=1] & = \displaystyle\sum_{i=1}^{n} \displaystyle\sum_{j=1}^{n} \displaystyle\sum_{d|i, d|j} \mu(d) \\ & = \displaystyle\sum_{d=1}^{n} \mu(d) \displaystyle\sum_{d|i} \displaystyle\sum_{d|j} 1\\ & = \displaystyle\sum_{d=1}^{n}\mu(d)\displaystyle\sum_{i=1}^{\lfloor n/d \rfloor}\displaystyle\sum_{j=1}^{\lfloor n/d \rfloor}1\\ & = \displaystyle\sum_{d=1}^{n}\mu(d) \lfloor \frac{n}{d} \rfloor ^ 2 \end{aligned} i=1∑nj=1∑n[gcd(i,j)=1]=i=1∑nj=1∑nd∣i,d∣j∑μ(d)=d=1∑nμ(d)d∣i∑d∣j∑1=d=1∑nμ(d)i=1∑⌊n/d⌋j=1∑⌊n/d⌋1=d=1∑nμ(d)⌊dn⌋2
其中的第二步,先枚举
d
d
d
再看下一步,因为
d
∣
i
,
d
∣
j
d|i,d|j
d∣i,d∣j,因此
i
i
i和
j
j
j一定是
d
d
d的整数倍
于是我们枚举
i
=
1
,
2
,
.
.
.
,
⌊
n
/
d
⌋
i=1, 2, ..., \lfloor n/d \rfloor
i=1,2,...,⌊n/d⌋,那么
i
∗
d
i*d
i∗d就是原来的
i
i
i值,这样就能保证
d
∣
i
d|i
d∣i
代码实现比较简单,求一个
μ
(
i
)
\mu(i)
μ(i)的前缀和,加一个数论分块就行
2. ∑ i = 1 n ∑ j = 1 n [ g c d ( i , j ) = k ] \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}[gcd(i,j)=k] i=1∑nj=1∑n[gcd(i,j)=k]
推导过程
∑
i
=
1
n
∑
j
=
1
n
[
g
c
d
(
i
,
j
)
=
k
]
=
∑
i
=
1
n
∑
j
=
1
n
∑
d
∣
i
k
,
d
∣
j
k
μ
(
d
)
=
∑
i
=
1
⌊
n
/
k
⌋
∑
j
=
1
⌊
n
/
k
⌋
∑
d
∣
i
,
d
∣
j
μ
(
d
)
=
∑
d
=
1
n
μ
(
d
)
∑
i
=
1
⌊
n
/
d
k
⌋
∑
j
=
1
⌊
n
/
d
k
⌋
1
=
∑
d
=
1
n
μ
(
d
)
⌊
n
d
k
⌋
2
\begin{aligned} \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}[gcd(i,j)=k] & = \displaystyle\sum_{i=1}^{n}\displaystyle\sum_{j=1}^{n}\displaystyle\sum_{d|\frac{i}{k},d|\frac{j}{k}}\mu(d) \\ & = \displaystyle\sum_{i=1}^{\lfloor n/k \rfloor}\displaystyle\sum_{j=1}^{\lfloor n/k \rfloor}\displaystyle\sum_{d|i,d|j}\mu(d) \\ & = \displaystyle\sum_{d=1}^{n}\mu(d)\displaystyle\sum_{i=1}^{\lfloor n/dk \rfloor}\displaystyle\sum_{j=1}^{\lfloor n/dk \rfloor}1\\ & = \displaystyle\sum_{d=1}^{n}\mu(d) \lfloor \frac{n}{dk} \rfloor ^ 2 \end{aligned}
i=1∑nj=1∑n[gcd(i,j)=k]=i=1∑nj=1∑nd∣ki,d∣kj∑μ(d)=i=1∑⌊n/k⌋j=1∑⌊n/k⌋d∣i,d∣j∑μ(d)=d=1∑nμ(d)i=1∑⌊n/dk⌋j=1∑⌊n/dk⌋1=d=1∑nμ(d)⌊dkn⌋2
其中第二步我们将
i
i
i和
j
j
j同时缩小了
k
k
k倍,于是有
∑
i
=
1
⌊
n
/
k
⌋
∑
j
=
1
⌊
n
/
k
⌋
∑
d
∣
i
,
d
∣
j
μ
(
d
)
\displaystyle\sum_{i=1}^{\lfloor n/k \rfloor}\displaystyle\sum_{j=1}^{\lfloor n/k \rfloor}\displaystyle\sum_{d|i,d|j}\mu(d)
i=1∑⌊n/k⌋j=1∑⌊n/k⌋d∣i,d∣j∑μ(d)
其余部分和上一条一样的
练习题
3. ∑ i = 1 n ∑ j = 1 n g c d ( i , j ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} gcd(i, j) i=1∑nj=1∑ngcd(i,j)
推导过程
∑
i
=
1
n
∑
j
=
1
n
g
c
d
(
i
,
j
)
=
∑
d
=
1
n
∑
i
=
1
n
∑
j
=
1
n
d
[
g
c
d
(
i
,
j
)
=
d
]
=
∑
d
=
1
n
d
∑
i
=
1
n
∑
j
=
1
n
[
g
c
d
(
i
,
j
)
=
d
]
=
∑
d
=
1
n
d
∑
i
=
1
⌊
n
/
d
⌋
∑
j
=
1
⌊
n
/
d
⌋
[
g
c
d
(
i
,
j
)
=
1
]
=
∑
d
=
1
d
∑
i
=
1
⌊
n
/
d
⌋
∑
j
=
1
⌊
n
/
d
⌋
∑
t
∣
i
,
t
∣
j
μ
(
t
)
=
∑
d
=
1
d
∑
t
=
1
⌊
n
/
d
⌋
μ
(
t
)
⌊
n
d
t
⌋
2
\begin{aligned} \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} gcd(i, j) & = \displaystyle\sum_{d = 1}^{n} \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n}d[gcd(i, j)= d] \\ & = \displaystyle\sum_{d = 1}^{n} d \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n}[gcd(i, j) = d] \\ & = \displaystyle\sum_{d = 1}^{n} d \displaystyle\sum_{i = 1}^{ \lfloor n / d \rfloor } \displaystyle\sum_{j = 1}^{ \lfloor n / d \rfloor } [gcd(i, j) = 1] \\ & = \displaystyle\sum_{d = 1} d \displaystyle\sum_{i = 1}^{ \lfloor n / d \rfloor } \displaystyle\sum_{j = 1}^{ \lfloor n / d \rfloor } \displaystyle\sum_{t | i, t|j} \mu(t) \\ & = \displaystyle\sum_{d = 1} d \displaystyle\sum_{t = 1}^{ \lfloor n / d \rfloor } \mu(t) \lfloor \frac{n}{dt} \rfloor ^ 2 \end{aligned}
i=1∑nj=1∑ngcd(i,j)=d=1∑ni=1∑nj=1∑nd[gcd(i,j)=d]=d=1∑ndi=1∑nj=1∑n[gcd(i,j)=d]=d=1∑ndi=1∑⌊n/d⌋j=1∑⌊n/d⌋[gcd(i,j)=1]=d=1∑di=1∑⌊n/d⌋j=1∑⌊n/d⌋t∣i,t∣j∑μ(t)=d=1∑dt=1∑⌊n/d⌋μ(t)⌊dtn⌋2
到这里,我们已经能够在
O
(
n
)
O(n)
O(n)的时间内计算,但是还不够,我们仍可以继续优化下去
令
T
=
t
d
T=td
T=td,要使
⌊
n
d
t
⌋
>
0
\lfloor \frac{n}{dt} \rfloor \gt 0
⌊dtn⌋>0,于是我们枚举
T
=
t
d
=
1
,
2
,
.
.
.
,
n
T = td = 1, 2, ..., n
T=td=1,2,...,n
∑
i
=
1
n
∑
j
=
1
n
g
c
d
(
i
,
j
)
=
∑
T
=
1
n
⌊
n
T
⌋
2
∑
t
∣
T
μ
(
d
)
(
T
d
)
\displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} gcd(i, j) = \displaystyle\sum_{T = 1}^{n} \lfloor \frac{n}{T} \rfloor ^ 2 \displaystyle\sum_{t | T} \mu(d)(\frac{T}{d})
i=1∑nj=1∑ngcd(i,j)=T=1∑n⌊Tn⌋2t∣T∑μ(d)(dT)
注意,
∑
t
∣
T
μ
(
d
)
(
T
d
)
=
(
μ
∗
i
d
)
(
T
)
=
φ
(
T
)
\displaystyle\sum_{t | T} \mu(d)(\frac{T}{d}) = (\mu*id)(T)=\varphi(T)
t∣T∑μ(d)(dT)=(μ∗id)(T)=φ(T)
所以最终我们有
∑
i
=
1
n
∑
j
=
1
n
g
c
d
(
i
,
j
)
=
∑
T
=
1
n
⌊
n
T
⌋
2
φ
(
T
)
\displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} gcd(i, j) = \displaystyle\sum_{T = 1}^{n} \lfloor \frac{n}{T} \rfloor ^ 2 \varphi(T)
i=1∑nj=1∑ngcd(i,j)=T=1∑n⌊Tn⌋2φ(T)
这样就能够
O
(
n
)
O(\sqrt n)
O(n)计算出我们的答案
记住这里的优化方式,以后会经常碰到,当你发现优化不下去的时候,考虑代换
练习题
4. ∑ i = 1 n ∑ j = 1 n l c m ( i , j ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} lcm(i, j) i=1∑nj=1∑nlcm(i,j)
推导过程
首先
l
c
m
(
i
,
j
)
=
i
j
g
c
d
(
i
,
j
)
lcm(i, j) = \frac{ij}{gcd(i,j)}
lcm(i,j)=gcd(i,j)ij
∑
i
=
1
n
∑
j
=
1
n
l
c
m
(
i
,
j
)
=
∑
i
=
1
n
∑
j
=
1
n
i
j
g
c
d
(
i
,
j
)
=
∑
d
=
1
n
∑
i
=
1
⌊
n
/
d
⌋
∑
j
=
1
⌊
n
/
d
⌋
i
d
j
d
d
[
g
c
d
(
i
,
j
)
=
1
]
=
∑
d
=
1
n
d
∑
i
=
1
⌊
n
/
d
⌋
∑
j
=
1
⌊
n
/
d
⌋
i
j
∑
t
∣
i
,
t
∣
j
μ
(
t
)
=
∑
d
=
1
n
d
∑
t
=
1
⌊
n
/
d
⌋
μ
(
t
)
∑
i
=
1
⌊
n
/
d
t
⌋
i
t
∑
j
=
1
⌊
n
/
d
t
⌋
j
t
=
∑
d
=
1
n
d
∑
t
=
1
⌊
n
/
d
⌋
μ
(
t
)
t
2
∑
i
=
1
⌊
n
/
d
t
⌋
i
∑
j
=
1
⌊
n
/
d
t
⌋
j
\begin{aligned} \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} lcm(i, j) & = \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} \frac{ij}{gcd(i, j)}\\ & = \displaystyle\sum_{d = 1}^{n} \displaystyle\sum_{i = 1}^{\lfloor n/d \rfloor} \displaystyle\sum_{j = 1}^{\lfloor n/d \rfloor} \frac{idjd}{d}[gcd(i, j) = 1] \\ & = \displaystyle\sum_{d = 1}^{n} d \displaystyle\sum_{i = 1}^{\lfloor n/d \rfloor} \displaystyle\sum_{j = 1}^{\lfloor n/d \rfloor} ij \displaystyle\sum_{t | i,t | j} \mu(t) \\ & = \displaystyle\sum_{d = 1}^{n} d \displaystyle\sum_{t = 1}^{\lfloor n/d \rfloor} \mu(t) \displaystyle\sum_{i = 1} ^ {\lfloor n / dt \rfloor} it \displaystyle\sum_{j = 1} ^ {\lfloor n / dt \rfloor} jt \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t)t ^ 2 \displaystyle\sum_{i = 1} ^ {\lfloor n / dt \rfloor} i \displaystyle\sum_{j = 1} ^ {\lfloor n / dt \rfloor} j \\ \end{aligned}
i=1∑nj=1∑nlcm(i,j)=i=1∑nj=1∑ngcd(i,j)ij=d=1∑ni=1∑⌊n/d⌋j=1∑⌊n/d⌋didjd[gcd(i,j)=1]=d=1∑ndi=1∑⌊n/d⌋j=1∑⌊n/d⌋ijt∣i,t∣j∑μ(t)=d=1∑ndt=1∑⌊n/d⌋μ(t)i=1∑⌊n/dt⌋itj=1∑⌊n/dt⌋jt=d=1∑ndt=1∑⌊n/d⌋μ(t)t2i=1∑⌊n/dt⌋ij=1∑⌊n/dt⌋j
我们记
s
u
m
1
(
n
)
=
1
+
2
+
.
.
.
+
n
=
n
(
n
+
1
)
/
2
sum_1(n) = 1 + 2 + ... + n = n(n+1)/2
sum1(n)=1+2+...+n=n(n+1)/2
其中
∑
i
=
1
⌊
n
/
d
t
⌋
i
=
1
+
2
+
.
.
.
+
⌊
n
/
d
t
⌋
=
s
u
m
1
(
⌊
n
/
d
t
⌋
)
\displaystyle\sum_{i = 1} ^ {\lfloor n / dt \rfloor} i = 1 + 2 + ... + \lfloor n / dt \rfloor = sum_1(\lfloor n / dt \rfloor)
i=1∑⌊n/dt⌋i=1+2+...+⌊n/dt⌋=sum1(⌊n/dt⌋)
∑
i
=
1
n
∑
j
=
1
n
l
c
m
(
i
,
j
)
=
∑
d
=
1
n
d
∑
t
=
1
⌊
n
/
d
⌋
μ
(
t
)
t
2
s
u
m
1
(
⌊
n
/
d
t
⌋
)
2
\displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} lcm(i, j) = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t)t ^ 2 sum_1(\lfloor n / dt \rfloor) ^ 2 \\
i=1∑nj=1∑nlcm(i,j)=d=1∑ndt=1∑⌊n/d⌋μ(t)t2sum1(⌊n/dt⌋)2
记
f
(
n
)
=
∑
t
=
1
n
μ
(
t
)
t
2
s
u
m
1
(
⌊
n
/
t
⌋
)
2
f(n)=\displaystyle\sum_{t = 1} ^ {n} \mu(t)t ^ 2 sum_1(\lfloor n / t \rfloor) ^ 2
f(n)=t=1∑nμ(t)t2sum1(⌊n/t⌋)2,那么
f
(
n
)
f(n)
f(n)可以
O
(
n
)
O(\sqrt n)
O(n)求,于是
∑
i
=
1
n
∑
j
=
1
n
l
c
m
(
i
,
j
)
=
∑
d
=
1
n
d
f
(
⌊
n
/
d
⌋
)
\displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} lcm(i, j) = \displaystyle\sum_{d = 1} ^ n df(\lfloor n / d \rfloor)
i=1∑nj=1∑nlcm(i,j)=d=1∑ndf(⌊n/d⌋)
最后总体就是
O
(
n
)
O
(
n
)
=
O
(
n
)
O(\sqrt n)O(\sqrt n)=O(n)
O(n)O(n)=O(n)
练习题
5. ∑ i = 1 n ∑ j = 1 n i j g c d ( i , j ) \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} ijgcd(i, j) i=1∑nj=1∑nijgcd(i,j)
推导过程
∑
i
=
1
n
∑
j
=
1
n
i
j
g
c
d
(
i
,
j
)
=
∑
d
=
1
n
d
∑
i
=
1
n
∑
j
=
1
n
i
j
[
g
c
d
(
i
,
j
)
=
d
]
=
∑
d
=
1
n
d
∑
i
=
1
⌊
n
/
d
⌋
∑
j
=
1
⌊
n
/
d
⌋
i
d
j
d
∑
t
∣
i
,
t
∣
j
μ
(
t
)
=
∑
d
=
1
n
d
3
∑
t
=
1
⌊
n
/
d
⌋
μ
(
t
)
∑
i
=
1
⌊
n
/
d
t
⌋
i
t
∑
j
=
1
⌊
n
/
d
t
⌋
j
t
=
∑
d
=
1
n
d
3
∑
t
=
1
⌊
n
/
d
⌋
μ
(
t
)
t
2
∑
i
=
1
⌊
n
/
d
t
⌋
i
∑
j
=
1
⌊
n
/
d
t
⌋
j
=
∑
d
=
1
n
d
3
∑
t
=
1
⌊
n
/
d
⌋
μ
(
t
)
t
2
s
u
m
1
(
⌊
n
/
d
t
⌋
)
2
\begin{aligned} \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} ijgcd(i, j) & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = 1} ^ {n} ij[gcd(i, j)=d] \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ {\lfloor n / d \rfloor} \displaystyle\sum_{j = 1} ^ {\lfloor n / d \rfloor} idjd \displaystyle\sum_{t|i,t|j} \mu(t) \\ & = \displaystyle\sum_{d = 1} ^ {n} d ^ 3 \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t) \displaystyle\sum_{i = 1} ^ {\lfloor n / dt \rfloor} it \displaystyle\sum_{j = 1} ^ {\lfloor n / dt \rfloor} jt \\ & = \displaystyle\sum_{d = 1} ^ {n} d ^ 3 \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t)t ^ 2 \displaystyle\sum_{i = 1} ^ {\lfloor n / dt \rfloor} i \displaystyle\sum_{j = 1} ^ {\lfloor n / dt \rfloor} j \\ & = \displaystyle\sum_{d = 1} ^ {n} d ^ 3 \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t)t ^ 2 sum_1(\lfloor n / dt \rfloor) ^ 2 \\ \end{aligned}
i=1∑nj=1∑nijgcd(i,j)=d=1∑ndi=1∑nj=1∑nij[gcd(i,j)=d]=d=1∑ndi=1∑⌊n/d⌋j=1∑⌊n/d⌋idjdt∣i,t∣j∑μ(t)=d=1∑nd3t=1∑⌊n/d⌋μ(t)i=1∑⌊n/dt⌋itj=1∑⌊n/dt⌋jt=d=1∑nd3t=1∑⌊n/d⌋μ(t)t2i=1∑⌊n/dt⌋ij=1∑⌊n/dt⌋j=d=1∑nd3t=1∑⌊n/d⌋μ(t)t2sum1(⌊n/dt⌋)2
到这里,我们已经能够
O
(
n
)
O(n)
O(n)求得答案,但是别慌,我们仍然可以继续优化
又是熟悉的代换,令
T
=
d
t
T = dt
T=dt,于是
∑
i
=
1
n
∑
j
=
1
n
i
j
g
c
d
(
i
,
j
)
=
∑
T
=
1
n
s
u
m
1
(
⌊
n
/
T
⌋
)
2
∑
t
∣
T
μ
(
t
)
t
2
(
T
t
)
3
=
∑
T
=
1
n
s
u
m
1
(
⌊
n
/
T
⌋
)
2
T
2
∑
t
∣
T
μ
(
t
)
(
T
t
)
\begin{aligned} \displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} ijgcd(i, j) & = \displaystyle\sum_{T = 1} ^ {n} sum_1(\lfloor n / T \rfloor) ^ 2 \displaystyle\sum_{t | T} \mu(t) t ^ 2 (\frac{T}{t}) ^ 3 \\ & = \displaystyle\sum_{T = 1} ^ {n} sum_1(\lfloor n / T \rfloor) ^ 2 T ^ 2 \displaystyle\sum_{t | T} \mu(t)(\frac{T}{t}) \end{aligned}
i=1∑nj=1∑nijgcd(i,j)=T=1∑nsum1(⌊n/T⌋)2t∣T∑μ(t)t2(tT)3=T=1∑nsum1(⌊n/T⌋)2T2t∣T∑μ(t)(tT)
又是熟悉的
μ
∗
i
d
=
φ
\mu*id=\varphi
μ∗id=φ
于是最终
∑
i
=
1
n
∑
j
=
1
n
i
j
g
c
d
(
i
,
j
)
=
∑
T
=
1
n
s
u
m
1
(
⌊
n
/
T
⌋
)
2
T
2
φ
(
T
)
\displaystyle\sum_{i = 1}^{n} \displaystyle\sum_{j = 1}^{n} ijgcd(i, j) = \displaystyle\sum_{T = 1} ^ {n} sum_1(\lfloor n / T \rfloor) ^ 2 T ^ 2 \varphi(T)
i=1∑nj=1∑nijgcd(i,j)=T=1∑nsum1(⌊n/T⌋)2T2φ(T)
复杂度
O
(
n
)
O(\sqrt n)
O(n)
练习题
这道练习题,因为数据比较大,需要用到杜教筛
五、拓展提高
学完了上面的内容之后,相信你应该已经基本掌握了比较经典的莫比乌斯反演
写了一些题,你会发现,莫比乌斯反演难,一是难在推导,二是难在一些预处理,比如要你预先处理好一些不常见的积性函数
下面的题目就按照难度逐个击破
1. ∑ i = 1 N ∑ j = 1 N l c m ( a i , a j ) \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i, a_j) i=1∑Nj=1∑Nlcm(ai,aj)
原题链接
给你 N N N个数 a 1 , a 2 , . . . , a N a_1, a_2, ..., a_N a1,a2,...,aN,其中 1 ≤ a i ≤ 50000 1\leq a_i \leq 50000 1≤ai≤50000,求 ∑ i = 1 N ∑ j = 1 N l c m ( a i , a j ) \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i,a_j) i=1∑Nj=1∑Nlcm(ai,aj)
推导过程
是不是看着很熟悉呢?经典推导中第四条
先对式子做基本的变形
∑
i
=
1
N
∑
j
=
1
N
l
c
m
(
a
i
,
a
j
)
=
∑
i
=
1
N
∑
j
=
1
N
a
i
a
j
g
c
d
(
a
i
,
a
j
)
\displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i, a_j) = \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N \frac{a_i a_j}{gcd(a_i, a_j)}
i=1∑Nj=1∑Nlcm(ai,aj)=i=1∑Nj=1∑Ngcd(ai,aj)aiaj
分析一下,光有
a
i
a_i
ai是没用的,我们要将式子中
a
i
a_i
ai转化为数字才行
所以我们不妨直接枚举
i
,
j
=
1
,
2
,
3
,
.
.
.
,
n
=
50000
i, j = 1, 2, 3, ..., n = 50000
i,j=1,2,3,...,n=50000,这样就有
∑
i
=
1
N
∑
j
=
1
N
l
c
m
(
a
i
,
a
j
)
=
∑
i
=
1
n
∑
j
=
1
n
c
n
t
i
c
n
t
j
i
j
g
c
d
(
i
,
j
)
\displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i, a_j) = \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = 1} ^ {n} cnt_i cnt_j \frac{ij}{gcd(i, j)}
i=1∑Nj=1∑Nlcm(ai,aj)=i=1∑nj=1∑ncnticntjgcd(i,j)ij
其中
c
n
t
i
,
c
n
t
j
cnt_i,cnt_j
cnti,cntj为数
i
,
j
i,j
i,j出现次数,于是我们继续
∑
i
=
1
N
∑
j
=
1
N
l
c
m
(
a
i
,
a
j
)
=
∑
d
=
1
n
∑
i
=
1
n
∑
j
=
1
n
c
n
t
i
c
n
t
j
i
j
d
[
g
c
d
(
i
,
j
)
=
d
]
=
∑
d
=
1
n
∑
i
=
1
⌊
n
/
d
⌋
∑
j
=
1
⌊
n
/
d
⌋
c
n
t
i
d
c
n
t
j
d
i
j
d
2
d
[
g
c
d
(
i
,
j
)
=
1
]
=
∑
d
=
1
n
d
∑
i
=
1
⌊
n
/
d
⌋
∑
j
=
1
⌊
n
/
d
⌋
i
j
c
n
t
i
d
c
n
t
j
d
∑
t
∣
i
,
t
∣
j
μ
(
t
)
=
∑
d
=
1
n
d
∑
t
=
1
⌊
n
/
d
⌋
μ
(
t
)
t
2
∑
i
=
1
⌊
n
/
d
t
⌋
i
c
n
t
i
d
t
∑
j
=
1
⌊
n
/
d
t
⌋
j
c
n
t
j
d
t
=
∑
d
=
1
n
d
∑
t
=
1
⌊
n
/
d
⌋
μ
(
t
)
t
2
(
∑
i
=
1
⌊
n
/
d
t
⌋
i
c
n
t
i
d
t
)
2
\begin{aligned} \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i, a_j) & = \displaystyle\sum_{d = 1} ^ {n} \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = 1} ^ {n} cnt_i cnt_j \frac{ij}{d} [gcd(i, j)=d] \\ & = \displaystyle\sum_{d = 1} ^ {n} \displaystyle\sum_{i = 1} ^ {\lfloor n / d \rfloor} \displaystyle\sum_{j = 1} ^ {\lfloor n / d \rfloor} cnt_{id} cnt_{jd} \frac{i j d ^ 2}{d}[gcd(i, j) = 1] \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ {\lfloor n / d \rfloor} \displaystyle\sum_{j = 1} ^ {\lfloor n / d \rfloor} ijcnt_{id} cnt_{jd} \displaystyle\sum_{t | i, t | j} \mu(t) \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t) t ^ 2 \displaystyle\sum_{i = 1} ^ {\lfloor n / d t \rfloor} i cnt_{i d t} \displaystyle\sum_{j = 1} ^ {\lfloor n / d t \rfloor} j cnt_{j d t} \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{t = 1} ^ {\lfloor n / d \rfloor} \mu(t) t ^ 2 \left( \displaystyle\sum_{i = 1} ^ {\lfloor n / d t \rfloor} i cnt_{i d t} \right) ^ 2 \end{aligned}
i=1∑Nj=1∑Nlcm(ai,aj)=d=1∑ni=1∑nj=1∑ncnticntjdij[gcd(i,j)=d]=d=1∑ni=1∑⌊n/d⌋j=1∑⌊n/d⌋cntidcntjddijd2[gcd(i,j)=1]=d=1∑ndi=1∑⌊n/d⌋j=1∑⌊n/d⌋ijcntidcntjdt∣i,t∣j∑μ(t)=d=1∑ndt=1∑⌊n/d⌋μ(t)t2i=1∑⌊n/dt⌋icntidtj=1∑⌊n/dt⌋jcntjdt=d=1∑ndt=1∑⌊n/d⌋μ(t)t2⎝⎛i=1∑⌊n/dt⌋icntidt⎠⎞2
到这里我们令
T
=
d
t
T=dt
T=dt
∑
i
=
1
N
∑
j
=
1
N
l
c
m
(
a
i
,
a
j
)
=
∑
T
=
1
n
(
∑
i
=
1
⌊
n
/
T
⌋
i
c
n
t
i
T
)
2
∑
t
∣
T
μ
(
t
)
t
2
(
T
t
)
=
∑
T
=
1
n
T
(
∑
i
=
1
⌊
n
/
T
⌋
i
c
n
t
i
T
)
2
∑
t
∣
T
μ
(
t
)
t
\begin{aligned} \displaystyle\sum_{i = 1} ^ N \displaystyle\sum_{j = 1} ^ N lcm(a_i, a_j) & = \displaystyle\sum_{T = 1} ^ {n} \left( \displaystyle\sum_{i = 1} ^ {\lfloor n / T \rfloor} i cnt_{i T} \right) ^ 2 \displaystyle\sum_{t | T} \mu(t) t ^ 2 (\frac{T}{t}) \\ & = \displaystyle\sum_{T = 1} ^ {n} T \left( \displaystyle\sum_{i = 1} ^ {\lfloor n / T \rfloor} i cnt_{i T} \right) ^ 2 \displaystyle\sum_{t | T} \mu(t) t \\ \end{aligned}
i=1∑Nj=1∑Nlcm(ai,aj)=T=1∑n⎝⎛i=1∑⌊n/T⌋icntiT⎠⎞2t∣T∑μ(t)t2(tT)=T=1∑nT⎝⎛i=1∑⌊n/T⌋icntiT⎠⎞2t∣T∑μ(t)t
先看后面的
∑
t
∣
T
μ
(
t
)
t
\displaystyle\sum_{t | T} \mu(t)t
t∣T∑μ(t)t,我们记做
f
(
T
)
f(T)
f(T),我们可以
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)预处理:
for (int t = 1; t <= n; t++)
for (int T = t; T <= n; T += t)
f[T] += mu[t] * t;
关于复杂度,这个是一个调和级数,即
n
1
+
n
2
+
n
3
+
.
.
.
+
1
\frac{n}{1} + \frac{n}{2} + \frac{n}{3} + ... + 1
1n+2n+3n+...+1,是
n
l
o
g
n
nlogn
nlogn级别的
再看
∑
i
=
1
⌊
n
/
T
⌋
i
c
n
t
i
T
\displaystyle\sum_{i = 1} ^ {\lfloor n / T \rfloor} i cnt_{i T}
i=1∑⌊n/T⌋icntiT,显然它也是是一个关于
T
T
T的函数
我们记
s
(
T
)
=
∑
i
=
1
⌊
n
/
T
⌋
i
c
n
t
i
T
=
∑
T
∣
t
t
T
c
n
t
t
=
1
T
∑
T
∣
t
t
c
n
t
t
s(T) = \displaystyle\sum_{i = 1} ^ {\lfloor n / T \rfloor} i cnt_{i T} = \displaystyle\sum_{T | t} \frac{t}{T} cnt_t = \frac{1}{T} \displaystyle\sum_{T | t} t cnt_t
s(T)=i=1∑⌊n/T⌋icntiT=T∣t∑Ttcntt=T1T∣t∑tcntt
这样也能
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)预处理
for (int T = 1; T <= n; T++) {
for (int t = T; t <= n; t += T)
s[T] += t * cnt[t];
s[T] /= T;
}
于是这题就能轻松搞定了
AC代码
2. ∑ i = 1 n l c m ( i , n ) \displaystyle\sum_{i = 1} ^ {n} lcm(i, n) i=1∑nlcm(i,n)
原题链接
推导过程
∑
i
=
1
n
l
c
m
(
i
,
n
)
=
∑
i
=
1
n
i
n
g
c
d
(
i
,
n
)
=
n
∑
i
=
1
n
i
g
c
d
(
i
,
n
)
=
n
∑
d
∣
n
∑
i
=
1
n
/
d
i
d
d
[
g
c
d
(
i
,
n
d
)
=
1
]
=
n
∑
d
∣
n
∑
i
=
1
n
/
d
i
[
g
c
d
(
i
,
n
d
)
=
1
]
=
n
∑
d
∣
n
∑
i
=
1
d
i
[
g
c
d
(
i
,
d
)
=
1
]
=
n
∑
d
∣
n
∑
i
=
1
d
i
∑
t
∣
i
,
t
∣
d
μ
(
t
)
=
n
∑
d
∣
n
∑
t
∣
d
μ
(
t
)
∑
i
=
1
d
/
t
i
t
=
n
∑
d
∣
n
∑
t
∣
d
μ
(
t
)
t
∑
i
=
1
d
/
t
i
=
n
∑
d
∣
n
∑
t
∣
d
μ
(
t
)
t
d
t
(
d
t
+
1
)
2
=
n
2
∑
d
∣
n
[
∑
t
∣
d
μ
(
t
)
d
2
t
+
∑
t
∣
d
μ
(
t
)
d
]
=
n
2
∑
d
∣
n
d
[
∑
t
∣
d
μ
(
t
)
d
t
+
∑
t
∣
d
μ
(
t
)
]
=
n
2
∑
d
∣
n
d
[
(
μ
∗
i
d
)
(
d
)
+
(
μ
∗
I
)
(
d
)
]
=
n
2
∑
d
∣
n
d
[
φ
(
d
)
+
ε
(
d
)
]
\begin{aligned} \displaystyle\sum_{i = 1} ^ {n} lcm(i, n) & = \displaystyle\sum_{i = 1} ^ {n} \frac{in}{gcd(i, n)} \\ & = n \displaystyle\sum_{i = 1} ^ {n} \frac{i}{gcd(i, n)} \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{i = 1} ^ {n / d} \frac{id}{d} [gcd(i, \frac{n}{d}) = 1] \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{i = 1} ^ {n / d} i [gcd(i, \frac{n}{d}) = 1] \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{i = 1} ^ {d} i [gcd(i, d) = 1] \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{i = 1} ^ {d} i \displaystyle\sum_{t | i, t | d} \mu(t) \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{t | d} \mu(t) \displaystyle\sum_{i = 1} ^ {d / t} i t \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{t | d} \mu(t)t \displaystyle\sum_{i = 1} ^ {d / t} i \\ & = n \displaystyle\sum_{d | n} \displaystyle\sum_{t | d} \mu(t) t \frac{\frac{d}{t} (\frac{d}{t} + 1) }{2} \\ & = \frac{n}{2} \displaystyle\sum_{d | n} \left[ \displaystyle\sum_{t | d} \mu(t) \frac{d ^ 2}{t} + \displaystyle\sum_{t | d} \mu(t) d \right] \\ & = \frac{n}{2} \displaystyle\sum_{d | n} d \left[ \displaystyle\sum_{t | d} \mu(t) \frac{d}{t} + \displaystyle\sum_{t | d} \mu(t) \right] \\ & = \frac{n}{2} \displaystyle\sum_{d | n} d \left[ \left( \mu*id \right) \left( d \right) + \left( \mu*I \right) \left( d \right) \right] \\ & = \frac{n}{2} \displaystyle\sum_{d | n} d \left[ \varphi \left( d \right) + \varepsilon \left( d \right) \right] \\ \end{aligned}
i=1∑nlcm(i,n)=i=1∑ngcd(i,n)in=ni=1∑ngcd(i,n)i=nd∣n∑i=1∑n/ddid[gcd(i,dn)=1]=nd∣n∑i=1∑n/di[gcd(i,dn)=1]=nd∣n∑i=1∑di[gcd(i,d)=1]=nd∣n∑i=1∑dit∣i,t∣d∑μ(t)=nd∣n∑t∣d∑μ(t)i=1∑d/tit=nd∣n∑t∣d∑μ(t)ti=1∑d/ti=nd∣n∑t∣d∑μ(t)t2td(td+1)=2nd∣n∑⎣⎡t∣d∑μ(t)td2+t∣d∑μ(t)d⎦⎤=2nd∣n∑d⎣⎡t∣d∑μ(t)td+t∣d∑μ(t)⎦⎤=2nd∣n∑d[(μ∗id)(d)+(μ∗I)(d)]=2nd∣n∑d[φ(d)+ε(d)]
显然所有答案可以像上一题那样
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)处理
AC代码
3. ∑ i = 1 N g c d ( ⌊ i 3 ⌋ , i ) \displaystyle\sum_{i = 1} ^ {N} gcd\left( \lfloor \sqrt[3]{i} \rfloor, i \right) i=1∑Ngcd(⌊3i⌋,i)
原题链接(2019年杭电多校第一场)
推导过程
记 n = N 3 n = \sqrt[3] {N} n=3N
∑
i
=
1
N
g
c
d
(
⌊
i
3
⌋
,
i
)
=
∑
i
=
1
n
∑
j
=
i
3
min
(
(
i
+
1
)
3
−
1
,
N
)
g
c
d
(
i
,
j
)
=
∑
i
=
1
n
−
1
∑
j
=
i
3
(
i
+
1
)
3
−
1
g
c
d
(
i
,
j
)
+
∑
j
=
n
3
N
g
c
d
(
n
,
j
)
\begin{aligned} \displaystyle\sum_{i = 1} ^ {N} gcd\left( \lfloor \sqrt[3]{i} \rfloor, i \right) & = \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = i ^ 3} ^ { \min(\left( i + 1 \right) ^ 3 - 1, N) } gcd(i, j) \\ & = \displaystyle\sum_{i = 1} ^ {n - 1} \displaystyle\sum_{j = i ^ 3} ^ {\left( i + 1 \right) ^ 3 - 1} gcd(i, j) + \displaystyle\sum_{j = n ^ 3} ^ {N} gcd(n, j) \end{aligned}
i=1∑Ngcd(⌊3i⌋,i)=i=1∑nj=i3∑min((i+1)3−1,N)gcd(i,j)=i=1∑n−1j=i3∑(i+1)3−1gcd(i,j)+j=n3∑Ngcd(n,j)
先求前半部分
不妨记
f
(
n
)
=
∑
i
=
1
n
∑
j
=
i
3
(
i
+
1
)
3
−
1
g
c
d
(
i
,
j
)
f\left( n \right) = \displaystyle\sum_{i = 1} ^ n \displaystyle\sum_{j = i ^ 3} ^ { \left( i + 1 \right) ^ 3 - 1 } gcd\left( i, j \right)
f(n)=i=1∑nj=i3∑(i+1)3−1gcd(i,j),那么原式就是要求
f
(
n
−
1
)
f\left( n - 1 \right)
f(n−1)
f
(
n
)
=
∑
i
=
1
n
∑
j
=
i
3
(
i
+
1
)
3
−
1
g
c
d
(
i
,
j
)
=
∑
d
=
1
n
d
∑
i
=
1
n
∑
j
=
i
3
(
i
+
1
)
3
−
1
[
g
c
d
(
i
,
j
)
=
d
]
=
∑
d
=
1
n
d
∑
i
=
1
⌊
n
/
d
⌋
∑
j
=
⌊
(
i
d
)
3
/
d
⌋
⌊
[
(
i
d
+
1
)
3
−
1
]
/
d
⌋
[
g
c
d
(
i
,
j
)
=
1
]
=
∑
d
=
1
n
d
∑
i
=
1
⌊
n
/
d
⌋
∑
j
=
⌊
(
i
d
)
3
/
d
⌋
⌊
[
(
i
d
+
1
)
3
−
1
]
/
d
⌋
∑
t
∣
i
,
t
∣
j
μ
(
t
)
=
∑
d
=
1
n
d
∑
t
=
1
⌊
n
/
d
⌋
μ
(
t
)
(
∑
i
=
1
⌊
n
/
d
t
⌋
∑
j
=
⌊
(
i
d
t
)
3
/
d
t
⌋
⌊
[
(
i
d
t
+
1
)
3
−
1
]
/
d
t
⌋
)
\begin{aligned} f\left( n \right) & = \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = i ^ 3} ^ { \left( i + 1 \right) ^ 3 - 1 } gcd\left( i, j \right) \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ {n} \displaystyle\sum_{j = i ^ 3} ^ {\left( i + 1 \right) ^ 3 - 1} \left[ gcd\left( i, j \right) = d \right] \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ { \lfloor n / d \rfloor } \displaystyle\sum_{j = \lfloor (id) ^ 3 / d \rfloor} ^ { \lfloor \left[ \left( id + 1 \right) ^ 3 - 1 \right] / d \rfloor } \left[ gcd\left( i, j \right) = 1 \right] \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{i = 1} ^ { \lfloor n / d \rfloor } \displaystyle\sum_{j = \lfloor (id) ^ 3 / d \rfloor} ^ { \lfloor \left[ \left( id + 1 \right) ^ 3 - 1 \right] / d \rfloor } \displaystyle\sum_{t | i, t | j} \mu(t) \\ & = \displaystyle\sum_{d = 1} ^ {n} d \displaystyle\sum_{t = 1} ^ { \lfloor n / d \rfloor } \mu(t) \left( \displaystyle\sum_{i = 1} ^ { \lfloor n / dt \rfloor } \displaystyle\sum_{j = \lfloor (idt) ^ 3 / dt \rfloor} ^ { \lfloor \left[ \left( idt + 1 \right) ^ 3 - 1 \right] / dt \rfloor } \right) \\ \end{aligned}
f(n)=i=1∑nj=i3∑(i+1)3−1gcd(i,j)=d=1∑ndi=1∑nj=i3∑(i+1)3−1[gcd(i,j)=d]=d=1∑ndi=1∑⌊n/d⌋j=⌊(id)3/d⌋∑⌊[(id+1)3−1]/d⌋[gcd(i,j)=1]=d=1∑ndi=1∑⌊n/d⌋j=⌊(id)3/d⌋∑⌊[(id+1)3−1]/d⌋t∣i,t∣j∑μ(t)=d=1∑ndt=1∑⌊n/d⌋μ(t)⎝⎜⎛i=1∑⌊n/dt⌋j=⌊(idt)3/dt⌋∑⌊[(idt+1)3−1]/dt⌋⎠⎟⎞
接下来老方法,令
T
=
d
t
T = dt
T=dt
f
(
n
)
=
∑
T
=
1
n
(
∑
i
=
1
⌊
n
/
T
⌋
∑
j
=
⌊
(
i
T
)
3
/
T
⌋
⌊
[
(
i
T
+
1
)
3
−
1
]
/
T
⌋
)
∑
t
∣
T
μ
(
t
)
(
T
t
)
=
∑
T
=
1
n
(
∑
i
=
1
⌊
n
/
T
⌋
∑
j
=
⌊
(
i
T
)
3
/
T
⌋
⌊
[
(
i
T
+
1
)
3
−
1
]
/
T
⌋
)
φ
(
T
)
\begin{aligned} f\left( n \right) & = \displaystyle\sum_{T = 1} ^ {n} \left( \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \displaystyle\sum_{j = \lfloor (iT) ^ 3 / T \rfloor} ^ { \lfloor \left[ \left( iT + 1 \right) ^ 3 - 1 \right] / T \rfloor } \right) \displaystyle\sum_{t | T} \mu(t) \left( \frac{T}{t} \right) \\ & = \displaystyle\sum_{T = 1} ^ {n} \left( \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \displaystyle\sum_{j = \lfloor (iT) ^ 3 / T \rfloor} ^ { \lfloor \left[ \left( iT + 1 \right) ^ 3 - 1 \right] / T \rfloor } \right) \varphi(T) \\ \end{aligned}
f(n)=T=1∑n⎝⎜⎛i=1∑⌊n/T⌋j=⌊(iT)3/T⌋∑⌊[(iT+1)3−1]/T⌋⎠⎟⎞t∣T∑μ(t)(tT)=T=1∑n⎝⎜⎛i=1∑⌊n/T⌋j=⌊(iT)3/T⌋∑⌊[(iT+1)3−1]/T⌋⎠⎟⎞φ(T)
再看括号里面的部分
g
(
n
,
T
)
=
∑
i
=
1
⌊
n
/
T
⌋
∑
j
=
⌊
(
i
T
)
3
/
T
⌋
⌊
[
(
i
T
+
1
)
3
−
1
]
/
T
⌋
=
∑
i
=
1
⌊
n
/
T
⌋
(
⌊
(
i
T
+
1
)
3
−
1
T
⌋
−
⌊
(
i
T
)
3
T
⌋
+
1
)
=
∑
i
=
1
⌊
n
/
T
⌋
(
⌊
(
i
T
+
1
)
3
−
(
i
T
)
3
−
1
T
⌋
+
1
)
=
∑
i
=
1
⌊
n
/
T
⌋
(
3
i
2
T
+
3
i
+
1
)
=
3
T
∑
i
=
1
⌊
n
/
T
⌋
i
2
+
3
∑
i
=
1
⌊
n
/
T
⌋
i
+
⌊
n
/
T
⌋
\begin{aligned} g (n, T) & = \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \displaystyle\sum_{j = \lfloor (iT) ^ 3 / T \rfloor} ^ { \lfloor \left[ \left( iT + 1 \right) ^ 3 - 1 \right] / T \rfloor } \\ & = \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \left( \lfloor \frac{ \left( iT + 1 \right) ^ 3 - 1 }{T} \rfloor - \lfloor \frac{ (iT) ^ 3 }{T} \rfloor + 1 \right) \\ & = \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \left( \lfloor \frac{ \left( iT + 1 \right) ^ 3 - (iT) ^ 3 - 1 }{T} \rfloor + 1 \right) \\ & = \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } \left( 3 i ^ 2 T + 3 i + 1 \right) \\ & = 3 T \displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } i ^ 2 + 3\displaystyle\sum_{i = 1} ^ { \lfloor n / T \rfloor } i + \lfloor n / T \rfloor \end{aligned}
g(n,T)=i=1∑⌊n/T⌋j=⌊(iT)3/T⌋∑⌊[(iT+1)3−1]/T⌋=i=1∑⌊n/T⌋(⌊T(iT+1)3−1⌋−⌊T(iT)3⌋+1)=i=1∑⌊n/T⌋(⌊T(iT+1)3−(iT)3−1⌋+1)=i=1∑⌊n/T⌋(3i2T+3i+1)=3Ti=1∑⌊n/T⌋i2+3i=1∑⌊n/T⌋i+⌊n/T⌋
可以预处理前缀和后
O
(
1
)
O(1)
O(1)得到
那么
f
(
n
)
=
∑
T
=
1
n
g
(
n
,
T
)
φ
(
T
)
f\left( n \right) = \displaystyle\sum_{T = 1} ^ {n} g \left(n, T \right) \varphi(T)
f(n)=T=1∑ng(n,T)φ(T),就可以
O
(
n
)
O(n)
O(n)得到
最后来看原式的后半部分
∑
j
=
n
3
N
g
c
d
(
n
,
j
)
\displaystyle\sum_{j = n ^ 3} ^ {N} gcd(n, j)
j=n3∑Ngcd(n,j)
∑
i
=
n
3
N
g
c
d
(
n
,
i
)
=
∑
d
∣
n
d
∑
i
=
⌊
n
3
/
d
⌋
⌊
N
/
d
⌋
[
g
c
d
(
n
d
,
j
)
=
1
]
=
∑
d
∣
n
d
∑
i
=
⌊
n
3
/
d
⌋
⌊
N
/
d
⌋
∑
t
∣
n
d
,
t
∣
i
μ
(
t
)
=
∑
d
∣
n
d
∑
t
d
∣
n
μ
(
t
)
(
∑
i
=
⌊
n
3
/
d
t
⌋
⌊
N
/
d
t
⌋
)
⇐
T
=
d
t
=
∑
T
∣
n
(
∑
i
=
⌊
n
3
/
T
⌋
⌊
N
/
T
⌋
)
∑
d
∣
T
μ
(
T
d
)
d
=
∑
T
∣
n
(
∑
i
=
⌊
n
3
/
T
⌋
⌊
N
/
T
⌋
)
φ
(
T
)
=
∑
T
∣
n
(
⌊
N
/
T
⌋
−
⌊
n
3
/
T
⌋
+
1
)
φ
(
T
)
\begin{aligned} \displaystyle\sum_{i = n ^ 3} ^ {N} gcd(n, i) & = \displaystyle\sum_{d | n} d \displaystyle\sum_{i = \lfloor n ^ 3 / d \rfloor} ^ { \lfloor N / d \rfloor } \left[ gcd\left( \frac{n}{d}, j \right) = 1 \right] \\ & = \displaystyle\sum_{d | n} d \displaystyle\sum_{i = \lfloor n ^ 3 / d \rfloor} ^ { \lfloor N / d \rfloor } \displaystyle\sum_{ t | \frac{n}{d}, t | i } \mu(t) \\ & = \displaystyle\sum_{d | n} d \displaystyle\sum_{td | n} \mu(t) \left( \displaystyle\sum_{i = \lfloor n ^ 3 / dt \rfloor} ^ { \lfloor N / dt \rfloor } \right) \Leftarrow T = dt \\ & = \displaystyle\sum_{T | n} \left( \displaystyle\sum_{i = \lfloor n ^ 3 / T \rfloor} ^ { \lfloor N / T \rfloor } \right) \displaystyle\sum_{ d | T } \mu(\frac{T}{d}) d \\ & = \displaystyle\sum_{T | n} \left( \displaystyle\sum_{i = \lfloor n ^ 3 / T \rfloor} ^ { \lfloor N / T \rfloor } \right) \varphi(T) \\ & = \displaystyle\sum_{T | n} \left( \lfloor N / T \rfloor - \lfloor n ^ 3 / T \rfloor + 1 \right) \varphi(T) \\ \end{aligned}
i=n3∑Ngcd(n,i)=d∣n∑di=⌊n3/d⌋∑⌊N/d⌋[gcd(dn,j)=1]=d∣n∑di=⌊n3/d⌋∑⌊N/d⌋t∣dn,t∣i∑μ(t)=d∣n∑dtd∣n∑μ(t)⎝⎛i=⌊n3/dt⌋∑⌊N/dt⌋⎠⎞⇐T=dt=T∣n∑⎝⎛i=⌊n3/T⌋∑⌊N/T⌋⎠⎞d∣T∑μ(dT)d=T∣n∑⎝⎛i=⌊n3/T⌋∑⌊N/T⌋⎠⎞φ(T)=T∣n∑(⌊N/T⌋−⌊n3/T⌋+1)φ(T)
于是我们后半部分可以
O
(
n
)
O\left(\sqrt n \right)
O(n)求得
总体复杂度就是
O
(
n
)
O\left( n \right)
O(n)