不好意思可能骗访问量了
贝尔级数在积性函数求和中的应用
作者:
序言:
本文首先介绍了贝尔级数,随后引入一种特殊的筛法,并简单阐述了筛法的优劣,引入前文有力武器解决问题。给出了积性函数在低于线性复杂度下求和的通用方法。
相关符号和约定:
(cdot)表示函数点乘,(*)表示迪利克雷卷积。(p)无特殊声明均表示质数。([])为艾弗森符号。
贝尔级数
定义:
(f)在模(p)意义下的贝尔级数:(f_p(x)=sum_{0leq i} f(p^i)x^i)
定理1:
若(f)是完全积性函数则有:(f_p(x)=sum_{0leq i} f(p)^ix^i)
证明:
根据等比数列求和公式可得(f_p(x)=frac{1}{1-f(p)x})
定理2:
((f* g)_p(x)=f_p(x)g_p(x))
证明:
((f* g)(n)=sum_{d|n} f(d)g(n/d))
((f* g)(p^n)=sum_{i=0}^n f(p^i)g(p^{n-i}))
((f* g)_p(x)=sum_{0leq i} sum_{j=0}^{i} f_p(x)[j]g_p(x)[i-j]) (此处([])指多项式项数)
$(f* g)_p(x)=f_p(x)g_p(x)
定理3:
对于两个积性函数(f(x),g(x)),如果有(f_p(x)=g_p(x)) ,那么(f(x)=g(x))
证明:
(forall x=prod p_i^{a_i},f(x)=prod f(p_{i}^{a_i})=prod f_{p_i}(x)[a_i]=prod g_{p_i}(x)[a_i]=g(x))
几个常见积性函数的贝尔级数:
首先写出常见的函数:
- (e(x)=[x=1])
- (1(x)=1)
- (ID(x)=x)
- (ID_k(x)=x^k)
- (mu(x)) 为莫比乌斯函数。
- (phi(x)) 为数论欧拉函数。
- (sigma_k(n)=sum_{d|n} d^k)
根据函数定义可得:(e_p(x)=1),(1_p(x)=frac{1}{1-x})
函数(ID,ID_k)为完全积性,根据定理1可得:
(ID_p(x)=frac{1}{1-px}),((ID_k)_p(x)=frac{1}{1-p^kx})
考虑从定义方向入手。
(mu(x))有对于任意(k>2,mu(p^k)=0)。
因此只有两项有非零系数,
(mu_p(x)=1-x,mu^2(x)=1+x,(IDcdot mu)_p(x)=1-px)
因为(phi=mu* ID,d=1*1,s=1*id,sigma_k(n)=1*ID_k), 根据定理2:
(phi_p(x)=frac{1-x}{1-px}),(d_p(x)=frac{1}{1-2x-x^2}),(s_p(x)=frac{1}{1-x-px+px^2}),((sigma_k)_p(x)=frac{1}{(1-p^kx)(1-x)})
引入一个少见的函数(lambda(x)) (刘维尔函数)
定义:(for x=prod p_i^{a_i} , sum a_i=z, lambda(x)=(-1)^z)
易得此函数完全积性,带入公式有:(lambda_p(x)=frac{1}{1+x})
此处证明一个不在下文提及得定理,故不作编号。
如果一个积性函数(f)和任何算数函数(g)满足(f(p^{n+1})=f(p)f(p^n)-g(p)f(p^{n-1})) 对于所有的(p)和(ngeq 1),
那么有(f_p(x)=frac{1}{1-f(p)x+g(p)x^2})。
证明:
发现贝尔级数的本质是形式幂级数,于是借鉴形式幂级数解决问题时的思路。
用次数平移对齐相减的方式,补齐缺失的0次项,可得:
(f_p(x)=f(p)f_p(x)x-g(x)f_p(x)x^2+1)
移项可得上式,有关运算的合法性请查阅形式幂级数相关论文。
虽然这个定理不会在下文出现,但是它提示了我们其形式幂级数的本质。
此处引入一个函数,下文仍不会提及。
定义(mu_k(n)=sum_{d^k|n} mu_{k-1}(frac{n}{d^k})mu_{k-1}(frac{n}{d}))
有((mu_k)_p(x)=frac{1-2x^k+x^{k+1}}{1-x})
证明:
使用数学归纳法,可以得到这个序列实际上是(+1,-1)交替的序列。
上式所对应的形式幂级数即为交替序列。
这个问题提示我们,当套路化的过程无法解决问题时,可以试图从定义入手。
杜教筛
上文有提到特殊的筛法,即使本文的第二大标题杜教筛。愧于作者能力不足,不明其真实名称,暂将其称为杜教筛。下文讲讲述这种筛法。
杜教筛是用于解决(s(n)=sum_{i=1}^n f(i)) ,其中 (f(i)) 为积性函数。
其流程如下:
- 找到一个容易求前缀和的积性函数(g(x))
- (sum_{i=1}^n (f*g)=sum_{d=1}^n g(d)s(frac{n}{d})=sum_{i=1}^n h(i))
- (g(1)s(n)=sum_{i=1}^n h(i)-sum_{i=2}^ng(i)s(frac{n}{d}))
- 注意到(frac{n}{d})的数量不会很多,于是按其分段,递归子问题解决。
我们注意到,想让上述式子复杂度低于线性,应当有在(O(1))时间内求出(g(x),h(x))前缀和的方法。这要求(g(x))的函数非常不错。这也是杜教筛应用方面的缺点。
我们先假设上述性质满足,计算一下杜教筛的复杂度。
抽象出复杂度模型:(T(n)=sqrt n+sum_{i=1}^{sqrt n}(T(i)+T(frac{n}{i})))
展开,因为高阶小量不影响渐进复杂度,可看作(T(n)=sum_{i=1}^{sqrt{n}}(sqrt i+sqrt{frac{n}{i}}))
上式渐进于(T(n)=sum_{i=1}^{sqrt{n}}sqrt{frac{n}{i}})
用积分代替求和,(T(n)=int_{i=1}^n sqrt{frac{n}{i}}=O(n^{frac{3}{4}}))
为严谨起见,带回高阶小量,发现均不超过此范围。既不做预处理的杜教筛复杂度为(O(n^{frac{3}{4}}))。
实际上,预处理可以得到更好的复杂度。但鉴于倾向于本文论调,不做应用方面的更多介绍。
杜教筛的优点也展现在复杂度证明中,其求和形式道出了其具有在嵌套下复杂度不变的性质。因此一个复杂的积性函数可以分解成多个易求和的积性函数。
解决上文留下的问题,想要构造一个合适的(g(x))是不容易的。但是根据定理三,贝尔级数和迪利克雷卷积之间建立了良好的关系。于是将不熟悉的积性函数求和问题变为了更容易处理的卷积问题。
应用实例:
示例1:
Ques:求(sum_{i=1}^n iphi(i))
首先通过等比数列求和的方式先得到一个 (icdot phi)的贝尔级数((icdot phi)_p(x)=frac{1-px}{1-p^2x})
注意到((ID^2)_p(x)=frac{1}{1-p^2x})的前缀和显然很好求,又有(ID_p(x)=frac{1}{1-px}),于是将其和(ID)做卷积。
示例2:
Ques:求(sum_{i=1}^n sum_{d|i} mu^2(d)frac{n}{d}mu(frac{n}{d}))
首先容易发现这个求前缀和的函数实际上是(mu^2*(IDcdotmu))
写出贝尔级数((1+x)(1-px)) ,很套路的发现卷(ID)可得(mu^2)。
(mu^2)不难求,按照因数个数进行容斥:
(sum_{i=1}^n mu^2(i)=sum_{ileqsqrt n} lfloorfrac{n}{i^2} floormu(i))
杜教筛即可。
示例3:
Ques:(f(1)=1,f(p^c)=p^c+(-1)^c),且(f)为积性函数。
直觉告诉我们(f_p(x)=ID_p(x)+lambda_p(x)),但第一项不太对,修一下变成
(f_p(x)=ID_p(x)+lambda_p(x)-e_p(x))
贝尔级数:(frac{1-px^2}{(1-px)(1+x)})
观察可见与示例1的贝尔级数一模一样?迪利克雷卷积之后进行杜教筛。