莫比乌斯反演
莫比乌斯反演基本形式:
对于一个函数 f ( x ) f(x) f(x)
设 g ( x ) = ∑ x ∣ d f ( d ) g(x)=\sum _{x \mid d} f(d) g(x)=∑x∣df(d),那么
f ( x ) = ∑ x ∣ d μ ( d x ) ⋅ g ( d ) f(x)=\sum _{x \mid d} \mu(\frac {d} {x}) \cdot g(d) f(x)=∑x∣dμ(xd)⋅g(d)
1 1 1: f ( x ) = 1 f(x)=1 f(x)=1
e e e: f ( x ) = [ x = 1 ] f(x) = [x = 1] f(x)=[x=1]
i d id id: f ( x ) = x f(x) = x f(x)=x
推式子:
-
1到 n n n与 n n n互质的数的个数: ∑ i = 1 n [ g c d ( i , n ) = 1 ] \sum _{i=1} ^{n} [gcd (i, n) = 1] ∑i=1n[gcd(i,n)=1]
令 f ( x ) = ∑ i = 1 n [ g c d ( i , n ) = x ] f(x)=\sum _{i=1} ^{n} [gcd (i, n) = x] f(x)=∑i=1n[gcd(i,n)=x]
g ( x ) = ∑ x ∣ d f ( d ) = ∑ x ∣ d ∑ i = 1 n [ g c d ( i , n ) = d ] = ∑ i = 1 n [ x ∣ g c d ( i , n ) ] = { ⌊ n x ⌋ , x ∣ n 0 , x ̸ ∣ n g(x) = \sum _{x \mid d} f(d) = \sum_{x \mid d} \sum _{i=1} ^{n} [gcd (i, n) = d] = \sum _{i=1} ^{n} [x \mid gcd (i, n)] \\ = \begin {cases} \lfloor \frac {n} {x} \rfloor, & x \mid n \\ 0, & x \not\mid n \end {cases} g(x)=∑x∣df(d)=∑x∣d∑i=1n[gcd(i,n)=d]=∑i=1n[x∣gcd(i,n)]={⌊xn⌋,0,x∣nx̸∣n
由莫比乌斯反演得:
f ( x ) = ∑ x ∣ d μ ( d x ) ⋅ g ( d ) = { ∑ x ∣ d μ ( d x ) ⋅ ⌊ n d ⌋ , d ∣ n 0 , d ̸ ∣ n = ∑ d ∣ n ∑ x ∣ d μ ( d x ) ⋅ ⌊ n d ⌋ f(x) = \sum _{x \mid d} \mu(\frac {d} {x}) \cdot g(d) = \begin {cases} \sum_{x \mid d} \mu(\frac {d} {x}) \cdot \lfloor \frac {n} {d} \rfloor, & d \mid n \\ 0, & d \not\mid n \end {cases} \\ = \sum_ {d \mid n} \sum _{x \mid d} \mu (\frac {d} {x}) \cdot \lfloor \frac {n} {d} \rfloor f(x)=∑x∣dμ(xd)⋅g(d)={∑x∣dμ(xd)⋅⌊dn⌋,0,d∣nd̸∣n=∑d∣n∑x∣dμ(xd)⋅⌊dn⌋
所求式子即为 f ( 1 ) = ∑ d ∣ n μ ( d ) ⋅ ⌊ n d ⌋ f(1) = \sum _{d \mid n} \mu (d) \cdot \lfloor \frac {n} {d} \rfloor f(1)=∑d∣nμ(d)⋅⌊dn⌋
根据欧拉函数定义,所求即为 φ ( n ) \varphi(n) φ(n)。
因此 φ ( n ) = ∑ d ∣ n μ ( d ) ⋅ n d = ∑ d ∣ n μ ( n d ) ⋅ d \varphi (n) = \sum _{d \mid n} \mu (d) \cdot \frac {n} {d} = \sum _{d \mid n} \mu (\frac n d) \cdot d φ(n)=∑d∣nμ(d)⋅dn=∑d∣nμ(dn)⋅d
-
1D gcd sum: ∑ i = 1 n g c d ( i , n ) = ∑ d ∣ n φ ( d ) ⌊ n d ⌋ \sum _{i=1} ^{n} gcd (i, n)=\sum _{d \mid n} \varphi(d) \lfloor \frac {n}{d} \rfloor ∑i=1ngcd(i,n)=∑d∣nφ(d)⌊dn⌋
∑ i = 1 n g c d ( i , n ) = ∑ d = 1 n d ∑ i = 1 n [ g c d ( i , n ) = d ] \sum_{i=1} ^{n} gcd(i, n) = \sum _{d=1} ^{n} d \sum _{i=1} ^{n} [gcd (i,n) = d] ∑i=1ngcd(i,n)=∑d=1nd∑i=1n[gcd(i,n)=d]
设 f ( x ) = ∑ i = 1 n [ g c d ( i , n ) = x ] f(x) = \sum _{i = 1} ^{n} [gcd(i, n) = x] f(x)=∑i=1n[gcd(i,n)=x]
g ( x ) = ∑ x ∣ d f ( d ) = ∑ x ∣ d ∑ i = 1 n [ g c d ( i , n ) = d ] = ∑ i = 1 n [ x ∣ g c d ( i , n ) ] = { ⌊ n x ⌋ , x ∣ n 0 , x ̸ ∣ n g(x) = \sum _{x \mid d} f(d) = \sum _{x \mid d} \sum _{i=1} ^{n} [gcd (i, n) = d] \\ = \sum _{i=1} ^{n} [x \mid gcd (i, n)] = \begin {cases} \lfloor \frac {n} {x} \rfloor, & x \mid n \\ 0, & x \not\mid n \end {cases} g(x)=∑x∣df(d)=∑x∣d∑i=1n[gcd(i,n)=d]=∑i=1n[x∣gcd(i,n)]={⌊xn⌋,0,x∣nx̸∣n
由莫比乌斯反演得:
f ( x ) = ∑ x ∣ d μ ( d x ) ⋅ g ( d ) = { ∑ x ∣ d μ ( d x ) ⋅ ⌊ n d ⌋ , d ∣ n 0 , d ̸ ∣ n = ∑ d ∣ n ∑ x ∣ d μ ( d x ) ⋅ ⌊ n d ⌋ f(x) = \sum _{x \mid d} \mu(\frac {d} {x}) \cdot g(d) = \begin {cases} \sum_{x \mid d} \mu(\frac {d} {x}) \cdot \lfloor \frac {n} {d} \rfloor, & d \mid n \\ 0, & d \not\mid n \end {cases} \\ = \sum_ {d \mid n} \sum _{x \mid d} \mu (\frac {d} {x}) \cdot \lfloor \frac {n} {d} \rfloor f(x)=∑x∣dμ(xd)⋅g(d)={∑x∣dμ(xd)⋅⌊dn⌋,0,d∣nd̸∣n=∑d∣n∑x∣dμ(xd)⋅⌊dn⌋
代回得:
∑ i = 1 n g c d ( i , n ) = { ∑ d = 1 n d ∑ d ∣ x μ ( x d ) ⋅ ⌊ n x ⌋ , x ∣ n 0 , x ̸ ∣ n = ∑ x ∣ n ∑ d ∣ x d ⋅ μ ( x d ) ⋅ ⌊ n x ⌋ = ∑ x ∣ n φ ( x ) ⋅ ⌊ n x ⌋ \sum_{i=1} ^{n} gcd(i, n) = \begin {cases} \sum _{d=1} ^{n} d \sum _{d \mid x} \mu(\frac {x} {d}) \cdot \lfloor \frac {n} {x} \rfloor, & x \mid n \\ 0, & x \not\mid n \end {cases} \\ = \sum_{x \mid n} \sum _{d \mid x} d \cdot \mu(\frac {x} {d}) \cdot \lfloor {\frac {n} {x}} \rfloor= \sum _{x \mid n} \varphi (x) \cdot \lfloor {\frac {n} {x}} \rfloor ∑i=1ngcd(i,n)={∑d=1nd∑d∣xμ(dx)⋅⌊xn⌋,0,x∣nx̸∣n=∑x∣n∑d∣xd⋅μ(dx)⋅⌊xn⌋=∑x∣nφ(x)⋅⌊xn⌋(参考 φ ( n ) = ∑ d ∣ n μ ( n d ) ⋅ d \varphi (n) = \sum _{d \mid n} \mu (\frac n d) \cdot d φ(n)=∑d∣nμ(dn)⋅d)
即 ∑ i = 1 n g c d ( i , n ) = ∑ d ∣ n φ ( d ) ⌊ n d ⌋ \sum _{i=1} ^{n} gcd (i, n)=\sum _{d \mid n} \varphi(d) \lfloor \frac {n}{d} \rfloor ∑i=1ngcd(i,n)=∑d∣nφ(d)⌊dn⌋
-
2D gcd sum: ∑ i = 1 n ∑ j = 1 m g c d ( i , j ) \sum _{i=1} ^{n} \sum _{j=1} ^{m} gcd (i, j) ∑i=1n∑j=1mgcd(i,j)
∑ i = 1 n ∑ j = 1 m g c d ( i , j ) = ∑ d = 1 n d ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = d ] \sum _{i=1} ^{n} \sum _{j=1} ^{m} gcd (i, j) = \sum _{d=1} ^{n}d \sum _{i=1} ^{n} \sum _{j=1} ^{m} [gcd (i, j) = d] ∑i=1n∑j=1mgcd(i,j)=∑d=1nd∑i=1n∑j=1m[gcd(i,j)=d]
设 f ( x ) = ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = x ] f(x) = \sum _{i=1} ^{n} \sum _{j=1} ^{m} [gcd (i, j) = x] f(x)=∑i=1n∑j=1m[gcd(i,j)=x]
g ( x ) = ∑ x ∣ d f ( d ) = ∑ x ∣ d ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = d ] = ∑ i = 1 n ∑ j = 1 m [ x ∣ g c d ( i , j ) ] = ⌊ n x ⌋ ⌊ m x ⌋ g(x)=\sum _{x \mid d} f(d) = \sum _{x \mid d} \sum _{i=1} ^{n} \sum _{j=1} ^{m} [gcd (i, j) = d] \\ = \sum _{i=1} ^{n} \sum _{j=1} ^{m} [x \mid gcd (i, j)] = \lfloor \frac {n} {x} \rfloor \lfloor \frac {m} {x} \rfloor g(x)=∑x∣df(d)=∑x∣d∑i=1n∑j=1m[gcd(i,j)=d]=∑i=1n∑j=1m[x∣gcd(i,j)]=⌊xn⌋⌊xm⌋
由莫比乌斯反演得:
f ( x ) = ∑ x ∣ d μ ( d x ) ⋅ g ( d ) = ∑ x ∣ d μ ( d x ) ⋅ ⌊ n d ⌋ ⌊ m d ⌋ f(x)=\sum _{x \mid d} \mu (\frac {d} {x}) \cdot g(d) = \sum _{x \mid d} \mu (\frac {d} {x}) \cdot \lfloor \frac {n} {d} \rfloor \lfloor \frac {m} {d} \rfloor f(x)=∑x∣dμ(xd)⋅g(d)=∑x∣dμ(xd)⋅⌊dn⌋⌊dm⌋
代回得:
∑ d = 1 n d ⋅ f ( d ) = ∑ d = 1 n d ∑ d ∣ x μ ( x d ) ⋅ ⌊ n x ⌋ ⌊ m x ⌋ = ∑ x = 1 n ∑ d ∣ x d ⋅ μ ( x d ) ⋅ ⌊ n x ⌋ ⌊ m x ⌋ = ∑ x = 1 n φ ( x ) ⋅ ⌊ n x ⌋ ⌊ m x ⌋ \sum _{d=1} ^{n}d \cdot f(d) = \sum _{d=1} ^n d \sum _{d \mid x} \mu (\frac {x} {d}) \cdot \lfloor \frac {n} {x} \rfloor \lfloor \frac {m} {x} \rfloor \\ = \sum _{x=1} ^n \sum _{d \mid x} d \cdot \mu (\frac x d) \cdot \lfloor \frac {n} {x} \rfloor \lfloor \frac {m} {x} \rfloor = \sum _{x=1} ^n \varphi (x) \cdot \lfloor \frac {n} {x} \rfloor \lfloor \frac {m} {x} \rfloor ∑d=1nd⋅f(d)=∑d=1nd∑d∣xμ(dx)⋅⌊xn⌋⌊xm⌋=∑x=1n∑d∣xd⋅μ(dx)⋅⌊xn⌋⌊xm⌋=∑x=1nφ(x)⋅⌊xn⌋⌊xm⌋
-
1…n和1…m中互质的数的对数
∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = 1 ] \sum _{i=1} ^{n} \sum _{j=1} ^{m} [gcd (i, j)=1] ∑i=1n∑j=1m[gcd(i,j)=1]
设 f ( x ) = ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = x ] f(x) = \sum _{i=1} ^{n} \sum _{j=1} ^{m} [gcd (i, j) = x] f(x)=∑i=1n∑j=1m[gcd(i,j)=x]
由莫比乌斯反演得:
f ( x ) = ∑ x ∣ d μ ( d x ) ⋅ g ( d ) = ∑ x ∣ d μ ( d x ) ⋅ ⌊ n d ⌋ ⌊ m d ⌋ f(x)=\sum _{x \mid d} \mu (\frac {d} {x}) \cdot g(d) = \sum _{x \mid d} \mu (\frac {d} {x}) \cdot \lfloor \frac {n} {d} \rfloor \lfloor \frac {m} {d} \rfloor f(x)=∑x∣dμ(xd)⋅g(d)=∑x∣dμ(xd)⋅⌊dn⌋⌊dm⌋
所求即 ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = 1 ] = f ( 1 ) = ∑ d = 1 n μ ( d ) ⋅ ⌊ n d ⌋ ⌊ m d ⌋ \sum _{i=1} ^{n} \sum _{j=1} ^{m} [gcd (i, j)=1] = f(1) = \sum _{d=1} ^n \mu (d) \cdot \lfloor \frac {n} {d} \rfloor \lfloor \frac {m} {d} \rfloor ∑i=1n∑j=1m[gcd(i,j)=1]=f(1)=∑d=1nμ(d)⋅⌊dn⌋⌊dm⌋
杜教筛
求积性函数 f ( i ) f(i) f(i)的前缀和 S ( i ) S(i) S(i)
S ( n ) = ∑ i = 1 n f ( i ) S(n) = \sum _{i=1} ^n f(i) S(n)=∑i=1nf(i)
杜教筛:
找一个积性函数 g ( i ) g(i) g(i),做 g g g和 f f f的狄利克雷卷积
( g ∗ f ) ( i ) = ∑ d ∣ i g ( d ) f ( i d ) (g * f) (i) = \sum _{d \mid i} g(d) f(\frac i d) (g∗f)(i)=∑d∣ig(d)f(di)
再做一下卷积的前缀和
∑ i = 1 n ( g ∗ f ) ( i ) = ∑ i = 1 n ∑ d ∣ i g ( d ) f ( i d ) \sum _{i=1} ^n (g*f)(i) = \sum _{i=1} ^n \sum _{d \mid i} g(d) f(\frac i d) ∑i=1n(g∗f)(i)=∑i=1n∑d∣ig(d)f(di)
把 d d d提出: ∑ d = 1 n g ( d ) ∑ d ∣ i f ( i d ) = ∑ d = 1 n g ( d ) ∑ i = 1 n d f ( i ) = ∑ d = 1 n g ( d ) S ( n d ) \sum _{d=1} ^n g(d) \sum_{d \mid i} f(\frac i d) = \sum _{d=1} ^n g(d) \sum _{i=1} ^{\frac n d} f(i) = \sum _{d=1} ^n g(d) S(\frac n d) ∑d=1ng(d)∑d∣if(di)=∑d=1ng(d)∑i=1dnf(i)=∑d=1ng(d)S(dn)
g ( 1 ) S ( n ) = ∑ i = 1 n g ( i ) S ( n i ) − ∑ i = 2 n g ( i ) S ( n i ) = ∑ i = 1 n ( g ∗ f ) ( i ) − ∑ i = 2 n g ( i ) S ( n i ) g(1)S(n) = \sum _{i=1} ^n g(i)S(\frac n i) - \sum _{i=2} ^n g(i)S(\frac n i) = \sum _{i=1} ^n (g*f)(i) - \sum _{i=2} ^n g(i)S(\frac n i) g(1)S(n)=∑i=1ng(i)S(in)−∑i=2ng(i)S(in)=∑i=1n(g∗f)(i)−∑i=2ng(i)S(in)
前半部分是狄利克雷卷积的前缀和。
如果狄利克雷卷积的前缀和非常好算,那么可以对后半部分进行数论分块,递归计算(记忆化)。
栗子: ∑ i = 1 n μ ( i ) \sum _{i=1} ^n \mu (i) ∑i=1nμ(i)
g ( 1 ) S ( n ) = ∑ i = 1 n ( g ∗ f ) ( i ) − ∑ i = 2 n g ( i ) S ( n i ) g(1)S(n) = \sum _{i=1} ^n (g*f)(i) - \sum _{i=2} ^n g(i)S(\frac n i) g(1)S(n)=∑i=1n(g∗f)(i)−∑i=2ng(i)S(in)
看到 μ \mu μ想到 ( μ ∗ 1 ) = e (\mu * 1) = e (μ∗1)=e即 ∑ d ∣ n μ ( d ) = [ n = 1 ] \sum _{d \mid n} \mu (d) = [n = 1] ∑d∣nμ(d)=[n=1]
e e e的前缀和就是1,十分好计算
因此取 g ( x ) = 1 g(x)=1 g(x)=1
S ( n ) = 1 − ∑ i = 2 n S ( n i ) S(n) = 1 - \sum _{i=2} ^n S(\frac n i) S(n)=1−∑i=2nS(in)
先筛出一部分 μ \mu μ的前缀和,然后记忆化递归计算。
栗子2: ∑ i = 1 n φ ( i ) \sum _{i=1} ^n \varphi (i) ∑i=1nφ(i)
看到 φ \varphi φ想到 ( φ ∗ 1 ) = i d (\varphi * 1) = id (φ∗1)=id即 ∑ d ∣ n φ ( d ) = n \sum _{d \mid n} \varphi (d) = n ∑d∣nφ(d)=n
取 g ( x ) = 1 g(x) = 1 g(x)=1
S ( n ) = n ( n + 1 ) 2 − ∑ i = 2 n S ( n i ) S(n) = \frac {n(n+1)} {2} - \sum _{i=2} ^n S(\frac n i) S(n)=2n(n+1)−∑i=2nS(in)