初探莫比乌斯反演

前言

作为一只数论只会 g c d gcd gcd的蒟蒻,强行学习了欧拉函数和莫比乌斯反演后,已经暴毙而亡。马上就要 A F O AFO AFO了,“死”前还是留点遗产吧。


简单的定义

  • ∑ : \sum: :求和
  • ∏ : \prod: : 乘积
  • [ x ] : [x]: [x]: x x x为一个逻辑表达式,若 x x x的结果为真,则值为 1 1 1,反之为 0 0 0
  • ⌊ x ⌋ : \lfloor x \rfloor: x: 表示不超过 x x x 的最大整数。

莫比乌斯函数

  • μ ( n ) = { 1 n = 1 ( − 1 ) k n = ∏ i = 1 m p i 0 o t h e r w i s e \mu(n)=\left\{\begin{matrix} 1 & n=1 \\ (-1)^k & n=\prod\limits_{i=1}^{m}p_i \\ 0 & otherwise \end{matrix}\right. μ(n)=1(1)k0n=1n=i=1mpiotherwise

莫比乌斯反演

(注:以下例题基本出自 W R WR WR 的数论博客中,略有删改。)

一个很有用的结论

∑ d ∣ n μ ( d ) = [ n = = 1 ] \sum\limits_{d \mid n}\mu(d)=[n==1] dnμ(d)=[n==1]
P r o o f : Proof: Proof:
n = 1 n=1 n=1 时,显然成立。
n > 1 n>1 n>1 时,设 n = ∏ i = 1 m p i c i n=\prod\limits_{i=1}^{m}p_i^{c_i} n=i=1mpici
d d d 存在一个质因子的次数 > 1 >1 >1,则 μ ( d ) = 0 \mu(d)=0 μ(d)=0
否则,设 d = ∏ i = 1 k p i ′ d = \prod\limits_{i=1}^{k}p'_i d=i=1kpi,则 μ ( d ) = ( − 1 ) k \mu(d)=(-1)^k μ(d)=(1)k
∴   ∑ d ∣ n = μ ( 1 ) + ∑ i = 1 m ( − 1 ) i ∗ ( m i ) = ∑ i = 0 m ( − 1 ) i ∗ 1 m − i ∗ ( m i ) \therefore \ \sum\limits_{d \mid n}=\mu(1)+\sum\limits_{i=1}^m(-1)^i*\tbinom{m}{i}=\sum\limits_{i=0}^{m}(-1)^i*1^{m-i}*\tbinom{m}{i}  dn=μ(1)+i=1m(1)i(im)=i=0m(1)i1mi(im)
根据二项式定理,上式 = 0 =0 =0
证毕。
该结论是莫比乌斯反演的核心。


以下内容默认 n ≤ m n \leq m nm ,不满足则交换。

e . g . 1 e.g.1 e.g.1

∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = 1 ] \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==1] i=1nj=1m[gcd(i,j)==1]
S o l u t i o n : Solution: Solution:
根据上面的结论可得:
∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = 1 ] = ∑ i = 1 n ∑ j = 1 m ∑ d ∣ g c d ( i , j ) μ ( d ) = ∑ d = 1 n μ ( d ) ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 ⌊ m d ⌋ 1 = ∑ d = 1 n μ ( d ) ∗ ⌊ n d ⌋ ∗ ⌊ m d ⌋ \begin{array}{l} \quad \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==1] \\ = \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\sum\limits_{d \mid gcd(i,j)}\mu(d) \\ = \sum\limits_{d=1}^{n}\mu(d)\sum\limits_{i=1}^{\lfloor \frac{n}{d} \rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{d} \rfloor}1 \\ = \sum\limits_{d=1}^{n}\mu(d)*\lfloor\frac{n}{d}\rfloor*\lfloor\frac{m}{d}\rfloor\\ \end{array} i=1nj=1m[gcd(i,j)==1]=i=1nj=1mdgcd(i,j)μ(d)=d=1nμ(d)i=1dnj=1dm1=d=1nμ(d)dndm
对第二行到第三行做出解释:
d ∣ g c d ( i , j ) ⇔ d ∣ i ∧ d ∣ j d \mid gcd(i,j) \Leftrightarrow d \mid i \land d \mid j dgcd(i,j)didj
∴ \therefore 满足 d ∣ g c d ( i , j ) d \mid gcd(i,j) dgcd(i,j) 的有序数对 ( i , j ) (i,j) (i,j) 可表示为 ( x d , y d ) ( x ∈ [ 1 , ⌊ n d ⌋ ] , y ∈ [ 1 , ⌊ m d ⌋ ] ) (xd,yd)(x\in[1, \lfloor \frac{n}{d} \rfloor],y\in[1, \lfloor \frac{m}{d} \rfloor]) (xd,yd)(x[1,dn],y[1,dm])
直接暴力做的话单次询问是 O ( n ) O(n) O(n) 的。
于是有了一个叫整除分块的东西。
打表找规律可得 ⌊ n d ⌋ \lfloor \frac{n}{d} \rfloor dn 只有 O ( n ) O(\sqrt{n}) O(n ) 种取值,
∴ ⌊ n d ⌋ ∗ ⌊ m d ⌋ \therefore \lfloor\frac{n}{d}\rfloor*\lfloor\frac{m}{d}\rfloor dndm 只有 O ( n + m ) O(\sqrt{n}+\sqrt{m}) O(n +m ) 种取值,可以分块。
n = 16 , m = 20 n=16,m=20 n=16,m=20 时的表如下:

d d d 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 12 12 12 13 13 13 14 14 14 15 15 15 16 16 16
⌊ n d ⌋ \lfloor\frac{n}{d}\rfloor dn 16 16 16 8 8 8 5 5 5 4 4 4 3 3 3 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
⌊ m d ⌋ \lfloor\frac{m}{d}\rfloor dm 20 20 20 10 10 10 6 6 6 5 5 5 4 4 4 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

以下给出证明:
P r o o f : Proof: Proof:
d ∈ [ 1 , n ] d \in [1, \sqrt{n}] d[1,n ] 时, d d d 的取值只有 O ( n ) O(\sqrt{n}) O(n ) 个,
∴ ⌊ n d ⌋ \therefore \lfloor\frac{n}{d}\rfloor dn 的取值只有 O ( n ) O(\sqrt{n}) O(n ) 个。
d ∈ ( n , n ] d \in (\sqrt{n},n] d(n ,n] 时, ⌊ n d ⌋ ∈ [ 1 , n ] \lfloor\frac{n}{d}\rfloor\in[1, \sqrt{n}] dn[1,n ]
∴ ⌊ n d ⌋ \therefore \lfloor\frac{n}{d}\rfloor dn 的取值只有 O ( n ) O(\sqrt{n}) O(n ) 个。
综上所述, ⌊ n d ⌋ \lfloor\frac{n}{d}\rfloor dn 的取值只有 O ( n ) O(\sqrt{n}) O(n ) 个。
∴ ⌊ n d ⌋ \therefore\lfloor\frac{n}{d}\rfloor dn 会被划分成 O ( n ) O(\sqrt{n}) O(n ) 段区间,每段区间内 ⌊ n d ⌋ \lfloor\frac{n}{d}\rfloor dn 的值相等
∴ \therefore 整张表会被划分成 O ( n + m ) O(\sqrt{n} + \sqrt{m}) O(n +m ) 段区间,每段区间内 ⌊ n d ⌋ \lfloor\frac{n}{d}\rfloor dn ⌊ n d ⌋ \lfloor\frac{n}{d}\rfloor dn 都相等。
\quad 当且仅当上一行的每段区间都与下一行的两段区间有交集时取到最大值。
证毕。
此外,还需要确定当前区间的末尾。
设当前区间的左端点为 l l l ,右端点为 r r r
则满足 ⌊ n l ⌋ = ⌊ n r ⌋ \lfloor \frac{n}{l} \rfloor = \lfloor \frac{n}{r} \rfloor ln=rn
∵ ⌊ n l ⌋ ≤ n l \because \lfloor \frac{n}{l} \rfloor \leq \frac{n}{l} lnln
∴ ⌊ n l ⌋ ≤ n r \quad \therefore \lfloor \frac{n}{l} \rfloor \leq \frac{n}{r} lnrn
∴ r ≤ n ⌊ n l ⌋ \quad \therefore r \leq \frac{n}{\lfloor \frac{n}{l} \rfloor} rlnn
∴ r ≤ ⌊ n ⌊ n l ⌋ ⌋ \quad \therefore r \leq \lfloor \frac{n}{\lfloor \frac{n}{l} \rfloor} \rfloor rlnn
m m m 同理,将两个右端点取 m i n min min 即可。


e . g . 2 e.g.2 e.g.2

∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = k ] \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==k] i=1nj=1m[gcd(i,j)==k]
S o l u t i o n : Solution: Solution:
显然 g c d ( i , j ) = = k ⇔ i ∣ k ∧ j ∣ k ∧ g c d ( i k , j k ) = = 1 gcd(i,j)==k \Leftrightarrow i \mid k \land j \mid k \land gcd(\frac{i}{k}, \frac{j}{k})==1 gcd(i,j)==kikjkgcd(ki,kj)==1
∴ ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = k ] = ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ [ g c d ( i , j ) = = 1 ] \therefore\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==k]=\sum\limits_{i=1}^{\lfloor \frac{n}{k} \rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{k} \rfloor}[gcd(i,j)==1] i=1nj=1m[gcd(i,j)==k]=i=1knj=1km[gcd(i,j)==1]
然后就和 e . g . 1 e.g.1 e.g.1一样了。


e . g . 3 e.g.3 e.g.3

∑ i = 1 n ∑ j = 1 m i ∗ j ∗ [ g c d ( i , j ) = = k ] \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}i*j*[gcd(i,j)==k] i=1nj=1mij[gcd(i,j)==k]
S o l u t i o n : Solution: Solution:
∑ i = 1 n ∑ j = 1 m i ∗ j ∗ [ g c d ( i , j ) = = k ] = ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ i ∗ k ∗ j ∗ k ∗ [ g c d ( i , j ) = = 1 ] = k 2 ∗ ∑ i = 1 ⌊ n k ⌋ i ∗ ∑ j = 1 ⌊ m k ⌋ j ∗ [ g c d ( i , j ) = = 1 ] = k 2 ∗ ∑ d = 1 ⌊ n k ⌋ μ ( d ) ∗ ∑ i = 1 ⌊ n k ∗ d ⌋ i ∗ ∑ j = 1 ⌊ m k ∗ d ⌋ j \begin{array}{l} \quad \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}i*j*[gcd(i,j)==k] \\ = \sum\limits_{i=1}^{\lfloor \frac{n}{k} \rfloor}\sum\limits_{j=1}^{\lfloor\frac{m}{k}\rfloor}i*k*j*k*[gcd(i,j)==1] \\ = k^2*\sum\limits_{i=1}^{\lfloor \frac{n}{k} \rfloor}i*\sum\limits_{j=1}^{\lfloor\frac{m}{k}\rfloor}j*[gcd(i,j)==1] \\ = k^2*\sum\limits_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)*\sum\limits_{i=1}^{\lfloor \frac{n}{k*d} \rfloor}i*\sum\limits_{j=1}^{\lfloor\frac{m}{k*d}\rfloor}j \\ \end{array} i=1nj=1mij[gcd(i,j)==k]=i=1knj=1kmikjk[gcd(i,j)==1]=k2i=1knij=1kmj[gcd(i,j)==1]=k2d=1knμ(d)i=1kdnij=1kdmj
后面的两个 ∑ \sum 都可以预处理,直接整除分块即可 O ( n ) O(\sqrt{n}) O(n ) 求解。


e . g . 4 e.g.4 e.g.4

∑ i = 1 n ∑ j = 1 m g c d ( i , j ) \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}gcd(i,j) i=1nj=1mgcd(i,j)
S o l u t i o n : Solution: Solution:
∑ i = 1 n ∑ j = 1 m g c d ( i , j ) = ∑ i = 1 n ∑ j = 1 m ∑ k = 1 n k ∗ [ g c d ( i , j ) = = k ] = ∑ k = 1 n k ∗ ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = k ] = ∑ k = 1 n k ∗ ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ ∑ d ∣ g c d ( i , j ) μ ( d ) = ∑ k = 1 n k ∗ ∑ d = 1 ⌊ n k ⌋ μ ( d ) ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ 1 = ∑ k = 1 n k ∗ ∑ d = 1 ⌊ n k ⌋ μ ( d ) ∗ ⌊ n k ∗ d ⌋ ∗ ⌊ m k ∗ d ⌋ \begin{array}{l} \quad \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}gcd(i,j) \\ = \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\sum\limits_{k=1}^{n}k*[gcd(i,j)==k] \\ = \sum\limits_{k=1}^{n}k*\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==k] \\ = \sum\limits_{k=1}^{n}k*\sum\limits_{i=1}^{\lfloor \frac{n}{k} \rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{k} \rfloor}\sum\limits_{d\mid gcd(i,j)}\mu(d) \\ = \sum\limits_{k=1}^{n}k*\sum\limits_{d=1}^{\lfloor \frac{n}{k} \rfloor}\mu(d)\sum\limits_{i=1}^{\lfloor \frac{n}{k} \rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{k} \rfloor}1 \\ = \sum\limits_{k=1}^{n}k*\sum\limits_{d=1}^{\lfloor \frac{n}{k} \rfloor}\mu(d)*\lfloor \frac{n}{k*d}\rfloor*\lfloor \frac{m}{k*d} \rfloor \\ \end{array} i=1nj=1mgcd(i,j)=i=1nj=1mk=1nk[gcd(i,j)==k]=k=1nki=1nj=1m[gcd(i,j)==k]=k=1nki=1knj=1kmdgcd(i,j)μ(d)=k=1nkd=1knμ(d)i=1knj=1km1=k=1nkd=1knμ(d)kdnkdm
做到这一步之后,有一个套路性的东西:
枚举 k ∗ d k*d kd
T = k ∗ d T=k*d T=kd
∴ ∑ k = 1 n k ∗ ∑ d = 1 ⌊ n k ⌋ μ ( d ) ∗ ⌊ n k ∗ d ⌋ ∗ ⌊ m k ∗ d ⌋ = ∑ T = 1 n ⌊ n T ⌋ ∗ ⌊ m T ⌋ ∗ ∑ d ∣ T μ ( d ) ∗ T d \therefore\sum\limits_{k=1}^{n}k*\sum\limits_{d=1}^{\lfloor \frac{n}{k} \rfloor}\mu(d)*\lfloor \frac{n}{k*d}\rfloor*\lfloor \frac{m}{k*d} \rfloor = \sum\limits_{T=1}^{n}\lfloor \frac{n}{T}\rfloor * \lfloor \frac{m}{T} \rfloor*\sum\limits_{d \mid T}\mu(d)*\frac{T}{d} k=1nkd=1knμ(d)kdnkdm=T=1nTnTmdTμ(d)dT
根据之前 φ \varphi φ 函数的性质可得,
∑ d ∣ T μ ( d ) ∗ T d = φ ( T ) \sum\limits_{d \mid T}\mu(d)*\frac{T}{d}=\varphi(T) dTμ(d)dT=φ(T)
∴ ∑ T = 1 n ⌊ n T ⌋ ∗ ⌊ m T ⌋ ∗ ∑ d ∣ T μ ( d ) ∗ T d = ∑ T = 1 n ⌊ n T ⌋ ∗ ⌊ m T ⌋ ∗ φ ( T ) \therefore \sum\limits_{T=1}^{n}\lfloor \frac{n}{T}\rfloor * \lfloor \frac{m}{T} \rfloor*\sum\limits_{d \mid T}\mu(d)*\frac{T}{d}=\sum\limits_{T=1}^{n}\lfloor \frac{n}{T}\rfloor * \lfloor \frac{m}{T} \rfloor*\varphi(T) T=1nTnTmdTμ(d)dT=T=1nTnTmφ(T)
预处理 φ \varphi φ 函数的前缀和即可整除分块, O ( n ) O(\sqrt{n}) O(n )求解。


e . g . 5 e.g.5 e.g.5

∑ i = 1 n ∑ j = 1 m l c m ( i , j ) \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}lcm(i,j) i=1nj=1mlcm(i,j)
S o l u t i o n : Solution: Solution:
∑ i = 1 n ∑ j = 1 m l c m ( i , j ) = ∑ i = 1 n ∑ j = 1 m i ∗ j g c d ( i , j ) = ∑ i = 1 n ∑ j = 1 m ∑ k = 1 n [ g c d ( i , j ) = = k ] ∗ i ∗ j k = ∑ k = 1 n ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ [ g c d ( i , j ) = = 1 ] ∗ i ∗ k ∗ j ∗ k k = ∑ k = 1 n k ∗ ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ [ g c d ( i , j ) = = 1 ] ∗ i ∗ j = ∑ k = 1 n k ∗ ∑ d = 1 ⌊ n k ⌋ μ ( d ) ∗ d 2 ∗ ∑ i = 1 ⌊ n k ∗ d ⌋ i ∗ ∑ j = 1 ⌊ m k ∗ d ⌋ j = ∑ T = 1 n ∑ i = 1 ⌊ n T ⌋ i ∗ ∑ j = 1 ⌊ m T ⌋ j ∗ ∑ d ∣ T μ ( d ) ∗ d 2 ∗ T d = ∑ T = 1 n T ∗ ∑ i = 1 ⌊ n T ⌋ i ∗ ∑ j = 1 ⌊ m T ⌋ j ∗ ∑ d ∣ T μ ( d ) ∗ d \begin{array}{l} \quad \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}lcm(i,j) \\ = \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\frac{i*j}{gcd(i,j)} \\ = \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\sum\limits_{k=1}^{n}[gcd(i,j)==k]*\frac{i*j}{k} \\ = \sum\limits_{k=1}^{n}\sum\limits_{i=1}^{\lfloor \frac{n}{k} \rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{k} \rfloor}[gcd(i,j)==1]*\frac{i*k*j*k}{k} \\ = \sum\limits_{k=1}^{n}k*\sum\limits_{i=1}^{\lfloor \frac{n}{k} \rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{k} \rfloor}[gcd(i,j)==1]*i*j \\ = \sum\limits_{k=1}^{n}k*\sum \limits_{d=1}^{\lfloor \frac{n}{k} \rfloor}\mu(d)*d^2*\sum\limits_{i=1}^{\lfloor \frac{n}{k*d} \rfloor}i*\sum\limits_{j=1}^{\lfloor \frac{m}{k*d} \rfloor}j \\ = \sum\limits_{T=1}^{n}\sum\limits_{i=1}^{\lfloor \frac{n}{T} \rfloor}i*\sum\limits_{j=1}^{\lfloor \frac{m}{T} \rfloor}j*\sum\limits_{d \mid T}\mu(d)*d^2*\frac{T}{d} \\ = \sum\limits_{T=1}^{n}T*\sum\limits_{i=1}^{\lfloor \frac{n}{T} \rfloor}i*\sum\limits_{j=1}^{\lfloor \frac{m}{T} \rfloor}j*\sum\limits_{d \mid T}\mu(d)*d \\ \end{array} i=1nj=1mlcm(i,j)=i=1nj=1mgcd(i,j)ij=i=1nj=1mk=1n[gcd(i,j)==k]kij=k=1ni=1knj=1km[gcd(i,j)==1]kikjk=k=1nki=1knj=1km[gcd(i,j)==1]ij=k=1nkd=1knμ(d)d2i=1kdnij=1kdmj=T=1ni=1Tnij=1TmjdTμ(d)d2dT=T=1nTi=1Tnij=1TmjdTμ(d)d
f ( n ) = ∑ i = 1 n i f(n)=\sum\limits_{i=1}^{n}i f(n)=i=1ni ,则
∑ T = 1 n T ∗ ∑ i = 1 ⌊ n T ⌋ i ∗ ∑ j = 1 ⌊ m T ⌋ j ∗ ∑ d ∣ T μ ( d ) ∗ d = ∑ T = 1 n f ( ⌊ n T ⌋ ) ∗ f ( ⌊ m T ⌋ ) ∗ ∑ d ∣ T μ ( d ) ∗ d \sum\limits_{T=1}^{n}T*\sum\limits_{i=1}^{\lfloor \frac{n}{T} \rfloor}i*\sum\limits_{j=1}^{\lfloor \frac{m}{T} \rfloor}j*\sum\limits_{d \mid T}\mu(d)*d= \sum\limits_{T=1}^{n}f(\lfloor \frac{n}{T}\rfloor)*f(\lfloor \frac{m}{T}\rfloor)*\sum\limits_{d \mid T}\mu(d)*d T=1nTi=1Tnij=1TmjdTμ(d)d=T=1nf(Tn)f(Tm)dTμ(d)d
显然 f f f 是可以预处理的,那么主要问题就是求最后一个 ∑ \sum
g ( n ) = ∑ d ∣ n μ ( d ) ∗ d g(n)=\sum\limits_{d \mid n}\mu(d)*d g(n)=dnμ(d)d
然后打个表,找找规律,会发现一个一个性质: g ( n ) g(n) g(n)是个积性函数
以下给出证明:
P r o o f : Proof: Proof:
g c d ( a , b ) = 1 gcd(a,b)=1 gcd(a,b)=1,则
g ( a ) ∗ g ( b ) = ∑ d 1 ∣ a μ ( d 1 ) ∗ d 1 ∗ ∑ d 2 ∣ b μ ( d 2 ) ∗ d 2 ∵ g c d ( a , b ) = 1 d 1 ∣ a d 2 ∣ b ∴ g c d ( d 1 , d 2 ) = 1 ∴ ∑ d 1 ∣ a μ ( d 1 ) ∗ d 1 ∗ ∑ d 2 ∣ b μ ( d 2 ) ∗ d 2 = ∑ ( d 1 ∗ d 2 ) ∣ ( a ∗ b ) μ ( d 1 ) ∗ μ ( d 2 ) ∗ d 1 ∗ d 2 = ∑ ( d 1 ∗ d 2 ) ∣ ( a ∗ b ) μ ( d 1 ∗ d 2 ) ∗ ( d 1 ∗ d 2 ) = g ( a ∗ b ) \begin{array}{l} \quad g(a)*g(b) \\ = \sum\limits_{d_1 \mid a}\mu(d_1)*d_1*\sum\limits_{d_2 \mid b}\mu(d_2)*d_2 \\ \because gcd(a,b)=1 \\ \quad d_1 \mid a \\ \quad d_2 \mid b \\ \therefore gcd(d1,d2)=1 \\ \therefore \sum\limits_{d_1 \mid a}\mu(d_1)*d_1*\sum\limits_{d_2 \mid b}\mu(d_2)*d_2 \\ = \sum\limits_{(d_1*d_2) \mid (a*b)}\mu(d_1)*\mu(d_2)*d_1*d_2 \\ = \sum\limits_{(d_1*d_2) \mid (a*b)}\mu(d_1*d_2)*(d_1*d_2) \\ = g(a*b)\\ \end{array} g(a)g(b)=d1aμ(d1)d1d2bμ(d2)d2gcd(a,b)=1d1ad2bgcd(d1,d2)=1d1aμ(d1)d1d2bμ(d2)d2=(d1d2)(ab)μ(d1)μ(d2)d1d2=(d1d2)(ab)μ(d1d2)(d1d2)=g(ab)
对两 ∑ \sum 合并做出解释:
μ ( d 1 ) ∗ μ ( d 2 ) = 0 \mu(d_1)*\mu(d_2)=0 μ(d1)μ(d2)=0 时,显然对结果无影响。
μ ( d 1 ) ∗ μ ( d 2 ) ̸ = 0 \mu(d_1)*\mu(d_2)\not=0 μ(d1)μ(d2)̸=0 时,
S = { x ∣ μ ( x ) ̸ = 0 ∧ x ∣ d 1 } , T = { x ∣ μ ( x ) ̸ = 0 ∧ x ∣ d 2 } S=\{x \mid \mu(x) \not=0 \land x\mid d_1\},T=\{x \mid \mu(x) \not=0 \land x\mid d_2\} S={xμ(x)̸=0xd1},T={xμ(x)̸=0xd2} ,则 S ∩ T = ∅ S\cap T=\emptyset ST=
显然 ( x 1 ∗ x 2 ) ∣ ( a ∗ b ) (x_1 * x_2) \mid (a * b) (x1x2)(ab) x 1 ∗ x 2 ̸ = x 1 ′ ∗ x 2 ′ , x 1 ′ ∈ S , x 2 ′ ∈ T , x 1 ̸ = x 1 ′ , x 2 ̸ = x 2 ′ x_1 * x_2 \not= x_1'*x_2',x_1'\in S,x_2'\in T,x_1 \not= x_1',x_2 \not= x_2' x1x2̸=x1x2,x1S,x2T,x1̸=x1,x2̸=x2
a ∗ b a * b ab 的每一个 μ \mu μ 值不为 0 0 0 的约数都唯一对应着一个二元组 ( x 1 , x 2 ) (x_1,x_2) (x1,x2)
证毕。
众所周知,所有的积性函数都可以用线性筛筛出来。
n n n 的最小质因子为 p p p x = n p x = \frac{n}{p} x=pn
考虑求 g ( n ) g(n) g(n)
n ∈ p r i m e n \in prime nprime 时, g ( n ) = μ ( 1 ) ∗ 1 + μ ( n ) ∗ n = 1 − n g(n)=\mu(1)*1+\mu(n)*n=1-n g(n)=μ(1)1+μ(n)n=1n
n = p k n = p^k n=pk 时, 显然 μ ( p i ) = 0 ( i ≥ 2 ) ⇒ g ( n ) = 1 − p = g ( p ) \mu(p^i)=0(i \geq 2) \Rightarrow g(n)=1-p=g(p) μ(pi)=0(i2)g(n)=1p=g(p)
p ∤ x p \nmid x px 时, 则 g c d ( x , p ) = 1 ⇒ g ( n ) = g ( x ) ∗ g ( p ) gcd(x, p)=1 \Rightarrow g(n)=g(x)*g(p) gcd(x,p)=1g(n)=g(x)g(p)
p ∣ x p \mid x px 时, 则 g ( n ) = g ( n p k ) ∗ g ( p k ) = g ( n ; p k ) ∗ g ( p ) = g ( n p k ) ∗ g ( p k − 1 ) = g ( x ) ( p k ∣ n ∧ p k + 1 ∤ n , k ∈ N ∗ , k ≥ 2 ) g(n)=g(\frac{n}{p^k})*g(p^k)=g(\frac{n};{p^k})*g(p)=g(\frac{n}{p^k})*g(p^{k-1})=g(x)(p^k \mid n \land p^{k+1} \nmid n,k\in \mathbb{N^*},k \geq 2) g(n)=g(pkn)g(pk)=g(npk)g(p)=g(pkn)g(pk1)=g(x)(pknpk+1n,kN,k2)
那么就可以 O ( n ) O(n) O(n) 预处理 g ( n ) g(n) g(n) 了。
∴ ∑ i = 1 n ∑ j = 1 m l c m ( i , j ) = ∑ T = 1 n f ( ⌊ n T ⌋ ) ∗ f ( ⌊ m T ⌋ ) ∗ g ( T ) \therefore \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}lcm(i,j)=\sum\limits_{T=1}^{n}f(\lfloor \frac{n}{T}\rfloor)*f(\lfloor \frac{m}{T}\rfloor)*g(T) i=1nj=1mlcm(i,j)=T=1nf(Tn)f(Tm)g(T)
单次询问即可做到 O ( n ) O(\sqrt{n}) O(n )


e . g . 6 e.g.6 e.g.6

∑ i = 1 n ∑ j = 1 m g c d ( i , j ) x \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}gcd(i,j)^x i=1nj=1mgcd(i,j)x
S o l u t i o n : Solution: Solution:
∑ i = 1 n ∑ j = 1 m g c d ( i , j ) x = ∑ k = 1 n ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = k ] ∗ k x = ∑ k = 1 n k x ∗ ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ [ g c d ( i , j ) = = 1 ] = ∑ k = 1 n k x ∗ ∑ d = 1 ⌊ n k ⌋ μ ( d ) ∗ ⌊ n k ∗ d ⌋ ∗ ⌊ m k ∗ d ⌋ = ∑ T = 1 n ⌊ n T ⌋ ∗ ⌊ m T ⌋ ∗ ∑ d ∣ T d x ∗ μ ( T d ) \begin{array}{l} \quad \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}gcd(i,j)^x \\ = \sum\limits_{k=1}^{n}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==k] *k^x \\ = \sum\limits_{k=1}^{n}k^x*\sum\limits_{i=1}^{\lfloor \frac{n}{k} \rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{k} \rfloor}[gcd(i,j)==1]\\ = \sum\limits_{k=1}^{n}k^x*\sum\limits_{d=1}^{\lfloor \frac{n}{k} \rfloor}\mu(d)*\lfloor \frac{n}{k*d} \rfloor*\lfloor \frac{m}{k*d} \rfloor \\ = \sum\limits_{T=1}^{n}\lfloor \frac{n}{T} \rfloor*\lfloor \frac{m}{T} \rfloor*\sum\limits_{d \mid T}d^x*\mu(\frac{T}{d}) \\ \end{array} i=1nj=1mgcd(i,j)x=k=1ni=1nj=1m[gcd(i,j)==k]kx=k=1nkxi=1knj=1km[gcd(i,j)==1]=k=1nkxd=1knμ(d)kdnkdm=T=1nTnTmdTdxμ(dT)
发现 f ( x ) = d x f(x)=d^x f(x)=dx 是个完全积性函数,当然也是积性函数。
∴ g ( n ) = ∑ d ∣ n d x ∗ μ ( n d ) = ( f ∗ μ ) ( n ) \therefore g(n)=\sum\limits_{d \mid n}d^x*\mu(\frac{n}{d})=(f*\mu)_{(n)} g(n)=dndxμ(dn)=(fμ)(n) 也是积性函数。
n n n 的最小质因子为 p p p x = n p x = \frac{n}{p} x=pn
考虑求 g ( n ) g(n) g(n)
n ∈ p r i m e n \in prime nprime 时, g ( n ) = μ ( 1 ) ∗ n x + μ ( n ) ∗ 1 x = n x − 1 g(n)=\mu(1)*n^x+\mu(n)*1^x=n^x-1 g(n)=μ(1)nx+μ(n)1x=nx1
n = p k n = p^k n=pk 时, 显然 μ ( p i ) = 0 ( i ≥ 2 ) ⇒ g ( n ) = n x − ( n p ) x = ( n p ) x ∗ g ( p ) \mu(p^i)=0(i \geq 2) \Rightarrow g(n)=n^x-(\frac{n}{p})^x=(\frac{n}{p})^x*g(p) μ(pi)=0(i2)g(n)=nx(pn)x=(pn)xg(p)
p ∤ x p \nmid x px 时, 则 g c d ( x , p ) = 1 ⇒ g ( n ) = g ( x ) ∗ g ( p ) gcd(x, p)=1 \Rightarrow g(n)=g(x)*g(p) gcd(x,p)=1g(n)=g(x)g(p)
p ∣ x p \mid x px 时, 则 g ( n ) = g ( n p k ) ∗ g ( p k ) = g ( n p k ) ∗ g ( p ) ∗ p ( k − 1 ) ∗ x = g ( n p k ) ∗ g ( p ) ∗ p ( k − 2 ) ∗ x ∗ p x = g ( n p k ) ∗ g ( p k − 1 ) ∗ p k = g ( x ) ∗ p k g(n)=g(\frac{n}{p^k})*g(p^k)=g(\frac{n}{p^k})*g(p)*p^{(k-1)*x}=g(\frac{n}{p^k})*g(p)*p^{(k-2)*x}*p^{x}=g(\frac{n}{p^k})*g(p^{k-1})*p^k=g(x)*p^k g(n)=g(pkn)g(pk)=g(pkn)g(p)p(k1)x=g(pkn)g(p)p(k2)xpx=g(pkn)g(pk1)pk=g(x)pk
( p k ∣ n ∧ p k + 1 ∤ n , k ∈ N ∗ , k ≥ 2 ) (p^k \mid n \land p^{k+1} \nmid n,k\in \mathbb{N^*},k \geq 2) (pknpk+1n,kN,k2)
e . g . 5 e.g.5 e.g.5 的筛法大同小异。
之后 O ( n ) O(\sqrt{n}) O(n ) 求解即可。


e . g . 7 e.g.7 e.g.7

∑ i = 1 n ∑ j = 1 m φ ( i ∗ j ) \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\varphi(i*j) i=1nj=1mφ(ij)
S o l u t i o n : Solution: Solution:
显然 φ ( i ∗ j ) \varphi(i*j) φ(ij) 不好处理,考虑将其转化。
结论: φ ( i ) ∗ φ ( j ) ∗ g c d ( i , j ) = φ ( i ∗ j ) ∗ φ ( g c d ( i , j ) ) \varphi(i)*\varphi(j)*gcd(i,j)=\varphi(i*j)*\varphi(gcd(i,j)) φ(i)φ(j)gcd(i,j)=φ(ij)φ(gcd(i,j))
以下给出该结论的证明。
P r o o f : Proof: Proof:
S = { x ∣ x ∈ p r i m e ∧ x ∣ i } , T = { x ∣ x ∈ p r i m e ∧ x ∣ j } S=\{x \mid x \in prime \land x \mid i\},T=\{x \mid x \in prime \land x \mid j\} S={xxprimexi},T={xxprimexj} ,则 S ∪ T = { x ∣ x ∈ p r i m e ∧ x ∣ ( i ∗ j ) } , S ∩ T = { x ∣ x ∈ p r i m e ∧ x ∣ g c d ( i , j ) } S \cup T = \{x \mid x \in prime \land x \mid (i*j)\},S \cap T = \{x \mid x \in prime \land x \mid gcd(i,j)\} ST={xxprimex(ij)},ST={xxprimexgcd(i,j)}
φ ( i ) ∗ φ ( j ) = i ∗ ∏ x ∈ S x − 1 x ∗ j ∗ ∏ x ∈ T x − 1 x = i ∗ j ∗ ∏ x ∈ ( S ∪ T ) x − 1 x ∗ ∏ x ∈ ( S ∩ T ) x − 1 x = φ ( i ∗ j ) ∗ φ ( g c d ( i , j ) ) g c d ( i , j ) \begin{array}{l} \quad \varphi(i)*\varphi(j) \\ = i*\prod\limits_{x \in S} \frac{x-1}{x}*j*\prod\limits_{x \in T}\frac{x - 1}{x} \\ = i*j*\prod\limits_{x \in (S \cup T)}\frac{x-1}{x}*\prod\limits_{x \in (S \cap T)}\frac{x-1}{x}\\ = \frac{\varphi(i*j)*\varphi(gcd(i,j))}{gcd(i,j)} \\ \end{array} φ(i)φ(j)=ixSxx1jxTxx1=ijx(ST)xx1x(ST)xx1=gcd(i,j)φ(ij)φ(gcd(i,j))
∴ ∑ i = 1 n ∑ j = 1 m φ ( i ∗ j ) = ∑ i = 1 n ∑ j = 1 m φ ( i ) ∗ φ ( j ) ∗ g c d ( i , j ) φ ( g c d ( i , j ) ) = ∑ k = 1 n ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = k ] ∗ φ ( i ) ∗ φ ( j ) ∗ k φ ( k ) = ∑ k = 1 n k φ ( k ) ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ [ g c d ( i , j ) = = 1 ] ∗ φ ( i ∗ k ) ∗ φ ( j ∗ k ) = ∑ k = 1 n k φ ( k ) ∑ d = 1 ⌊ n k ⌋ μ ( d ) ∗ ∑ i = 1 ⌊ n k ∗ d ⌋ ∑ j = 1 ⌊ m k ∗ d ⌋ φ ( i ∗ k ∗ d ) ∗ φ ( j ∗ k ∗ d ) = ∑ T = 1 n ∑ d ∣ T d φ ( d ) ∗ μ ( T d ) ∗ ∑ i = 1 ⌊ n T ⌋ φ ( i ∗ T ) ∗ ∑ j = 1 ⌊ m T ⌋ φ ( j ∗ T ) \begin{array}{l} \therefore \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\varphi(i*j) \\ = \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}\frac{\varphi(i)*\varphi(j)*gcd(i,j)}{\varphi(gcd(i,j))} \\ = \sum\limits_{k=1}^{n}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}[gcd(i,j)==k]*\frac{\varphi(i)*\varphi(j)*k}{\varphi(k)} \\ = \sum\limits_{k=1}^{n}\frac{k}{\varphi(k)}\sum\limits_{i=1}^{\lfloor \frac{n} {k}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{k} \rfloor}[gcd(i,j)==1]*\varphi(i*k)*\varphi(j*k) \\ = \sum\limits_{k=1}^{n}\frac{k}{\varphi(k)}\sum\limits_{d=1}^{\lfloor\frac{n}{k}\rfloor}\mu(d)*\sum\limits_{i=1}^{\lfloor \frac{n}{k*d}\rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{k*d} \rfloor}\varphi(i*k*d)*\varphi(j*k*d) \\ = \sum\limits_{T=1}^{n}\sum\limits_{d \mid T}\frac{d}{\varphi(d)}*\mu(\frac{T}{d})*\sum\limits_{i=1}^{\lfloor \frac{n}{T}\rfloor}\varphi(i*T)*\sum\limits_{j=1}^{\lfloor \frac{m}{T} \rfloor}\varphi(j*T) \\ \end{array} i=1nj=1mφ(ij)=i=1nj=1mφ(gcd(i,j))φ(i)φ(j)gcd(i,j)=k=1ni=1nj=1m[gcd(i,j)==k]φ(k)φ(i)φ(j)k=k=1nφ(k)ki=1knj=1km[gcd(i,j)==1]φ(ik)φ(jk)=k=1nφ(k)kd=1knμ(d)i=1kdnj=1kdmφ(ikd)φ(jkd)=T=1ndTφ(d)dμ(dT)i=1Tnφ(iT)j=1Tmφ(jT)
式子已经化到最简了,考虑预处理某些 ∑ \sum
为了便于表达,引入下列函数。

  • f ( n ) = ∑ d ∣ n d φ ( d ) ∗ μ ( n d ) f(n)=\sum\limits_{d \mid n}\frac{d}{\varphi(d)}*\mu(\frac{n}{d}) f(n)=dnφ(d)dμ(dn)
  • g ( k , n ) = ∑ i = 1 n φ ( i ∗ k ) g(k,n)=\sum\limits_{i=1}^{n}\varphi(i*k) g(k,n)=i=1nφ(ik)
  • h ( x , y , n ) = ∑ T = 1 n ∑ d ∣ T d φ ( d ) ∗ μ ( T d ) ∗ ∑ i = 1 x φ ( i ∗ T ) ∗ ∑ j = 1 y φ ( j ∗ T ) h(x,y,n)=\sum\limits_{T=1}^{n}\sum\limits_{d \mid T}\frac{d}{\varphi(d)}*\mu(\frac{T}{d})*\sum\limits_{i=1}^{x}\varphi(i*T)*\sum\limits_{j=1}^{y}\varphi(j*T) h(x,y,n)=T=1ndTφ(d)dμ(dT)i=1xφ(iT)j=1yφ(jT)
    考虑计算这三个函数。
    对于 f f f ,可以用类似埃氏筛法的方式,在预处理出 φ \varphi φ 函数的情况下 O ( n ln ⁡ n ) O(n \ln n) O(nlnn) 求出。
    对于 g g g ,有递推式 g ( k , n ) = g ( k , n − 1 ) + φ ( n ∗ k ) g(k, n)=g(k,n-1)+\varphi(n*k) g(k,n)=g(k,n1)+φ(nk) 。由于总的有用的状态只有 O ( n ln ⁡ n ) O(n \ln n) O(nlnn) 级别,开 n n n v e c t o r vector vector 预处理即可。
    对于 h h h ,有递推式 h ( x , y , n ) = h ( x , y , n − 1 ) + f ( n ) ∗ g ( n , x ) ∗ g ( n , y ) h(x,y,n)=h(x,y,n-1)+f(n)*g(n,x)*g(n,y) h(x,y,n)=h(x,y,n1)+f(n)g(n,x)g(n,y)
    全部预处理空间复杂度过高,考虑设置一个上限 t o p top top
    预处理所有 x , y ≤ t o p x,y \leq top x,ytop h h h
    对于 ⌊ n T ⌋ ≤ t o p \lfloor \frac{n}{T} \rfloor \leq top Tntop T T T ,可以在 O ( n ) O(\sqrt{n}) O(n ) 的时间内全部计算出来。
    对于 ⌊ n T ⌋ &gt; t o p \lfloor \frac{n}{T} \rfloor &gt; top Tn>top T T T ,有 T &lt; n t o p T &lt; \frac{n}{top} T<topn ,直接用 f ( T ) ∗ g ( T , ⌊ N T ⌋ ) ∗ g ( T , ⌊ m T ⌋ ) f(T)*g(T,\lfloor \frac{N}{T}\rfloor)*g(T,\lfloor \frac{m}{T} \rfloor) f(T)g(T,TN)g(T,Tm) 暴力计算,时间复杂度为 O ( n t o p ) O(\frac{n}{top}) O(topn)
    总时间复杂度: O ( n ln ⁡ n + t o p 2 ∗ n + q ∗ ( n t o p + n ) ) O(n \ln n + top^2*n+q*(\frac{n}{top}+\sqrt{n})) O(nlnn+top2n+q(topn+n ))
    t o p = n 3 top = \sqrt[3]{n} top=3n 时取到最小值 O ( n 5 3 ) O(n^\frac{5}{3}) O(n35)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值