作用: 在低于线性复杂度内解决某一类函数的前缀和
求数论函数 f(x) f ( x ) 的前缀和 s(n) s ( n ) , 即: s(n)=∑i=1nf(i) s ( n ) = ∑ i = 1 n f ( i )
找到一个数论函数 g(x) g ( x ) , 使得 g(x) g ( x ) 与 f(x) f ( x ) 的狄利克雷卷积 (f×g)(n)=∑d|ng(d)⋅f(nd) ( f × g ) ( n ) = ∑ d | n g ( d ) ⋅ f ( n d ) 的前缀和易求得
∑i=1n(f×g)(i)=∑i=1n∑d|ig(d)⋅f(id)=∑d=1n∑d|ing(d)⋅f(id)=∑d=1n∑i=1⌊nd⌋g(d)⋅f(i)=∑d=1ng(d)∑i=1⌊nd⌋f(i)=∑d=1ng(d)⋅s(⌊nd⌋)=g(1)⋅s(n)+∑d=2ng(d)⋅s(⌊nd⌋)(29)(30)(31)(32)(33)(34)(35) (29) ∑ i = 1 n ( f × g ) ( i ) (30) = ∑ i = 1 n ∑ d | i g ( d ) ⋅ f ( i d ) (31) = ∑ d = 1 n ∑ d | i n g ( d ) ⋅ f ( i d ) (32) = ∑ d = 1 n ∑ i = 1 ⌊ n d ⌋ g ( d ) ⋅ f ( i ) (33) = ∑ d = 1 n g ( d ) ∑ i = 1 ⌊ n d ⌋ f ( i ) (34) = ∑ d = 1 n g ( d ) ⋅ s ( ⌊ n d ⌋ ) (35) = g ( 1 ) ⋅ s ( n ) + ∑ d = 2 n g ( d ) ⋅ s ( ⌊ n d ⌋ )
即: g(1)⋅s(n)=∑i=1n(f×g)(i)−∑d=2ng(d)⋅s(⌊nd⌋) g ( 1 ) ⋅ s ( n ) = ∑ i = 1 n ( f × g ) ( i ) − ∑ d = 2 n g ( d ) ⋅ s ( ⌊ n d ⌋ )
例1: 莫比乌斯函数 μ(x) μ ( x ) 前缀和
{f(x)=μ(x)g(x)=1⇒(f×g)(x)=∑d|xμ(d)=e(x)={1(x=1)0(x≠1) { f ( x ) = μ ( x ) g ( x ) = 1 ⇒ ( f × g ) ( x ) = ∑ d | x μ ( d ) = e ( x ) = { 1 ( x = 1 ) 0 ( x ≠ 1 )
即: s(n)=1−∑i=2ns(⌊ni⌋) s ( n ) = 1 − ∑ i = 2 n s ( ⌊ n i ⌋ )
例2: 欧拉函数 φ(x) φ ( x ) 前缀和
{f(x)=φ(x)g(x)=1⇒(f×g)(x)=∑d|xφ(d)=x { f ( x ) = φ ( x ) g ( x ) = 1 ⇒ ( f × g ) ( x ) = ∑ d | x φ ( d ) = x
即: s(n)=(n+1)⋅n2−∑i=2ns(⌊ni⌋) s ( n ) = ( n + 1 ) ⋅ n 2 − ∑ i = 2 n s ( ⌊ n i ⌋ )