【進階】數論函式求和(理論)

Lgx_Q發表於2024-08-03

下面預設所有數論函式都是積性函式。

無窮元多項式

對於積性函式 \(f\),我們設計一個無窮元生成函式 \(A(x_1,x_2,...)\),其中 \(x_i\) 的次數對應第 \(i\) 個質數 \(p_i\) 的次數 \(c_i\)

可以寫出:

\[\begin{aligned} A(x_1,x_2,x_3,...) &= \sum_{\{c_1,c_2,...\}} f(p_1^{c_1}p_2^{c_2}p_3^{c_3}...)x_1^{c_1}x_2^{c_2}x_3^{c_3}... \\ &= \left(\sum_{c_1}f(p_1^{c_1})x_1^{c_1} \right) \left(\sum_{c_2}f(p_2^{c_2})x_2^{c_2} \right) \left(\sum_{c_3}f(p_3^{c_3})x_3^{c_3} \right)... \end{aligned}\]

容易得知該生成函式是每個元對應的一元生成函式的總乘積。

  • 貝爾級數:對於每個元 \(x\),我們定義 \(F(x)\) 為該元的一元生成函式,那麼 \(F(x)\) 稱為貝爾級數。
    常見積性函式的貝爾級數:

    • \(I\xrightarrow{\text{B.S.}} 1+x+x^2+... = \dfrac 1 {1 - x}\)
    • \(\varepsilon \xrightarrow{\text{B.S.}} 1\)
    • \(Id_k \xrightarrow{\text{B.S.}} 1 + p^kx + p^{2k}x^2 + p^{3k}x^3 + ... = \dfrac 1 {1 - p^kx}\)
    • \(\mu \xrightarrow{\text{B.S.}} 1 - x\)
    • \(\varphi \xrightarrow{\text{B.S.}} 1 + (p - 1)\sum\limits_{i = 1}p^{i - 1}x^i = 1 + \dfrac {(p - 1)x}{1 - px}\)
    • \(d \xrightarrow{\text{B.S.}} 1 + 2x + 3x^2 + 4x^3 = \dfrac 1 {(1 - x) ^ 2}\)
    • \(\sigma_k \xrightarrow{\text{B.S.}} \sum\limits_{i = 0} x^i \sum\limits_{j = 0} ^ i p^{jk} = \dfrac 1 {(1 - x)(1 - p^kx)}\)

這也證實了 \(\mu * I = \varepsilon\) 以及其他關係。

高維變換

將每個多項式的元作為一個維度,那麼有無窮個維度。對於給定的 \(n\),設 \(p_k\)\(n\) 以內最大的質數,那麼我們保留前 \(k\) 維。

和 FWT 幾乎一模一樣,我們可以對其進行高維字首和/字尾和,或者做差分。

  • \(\gcd\) 的本質:設兩個數 \(a,b\) 在每個質因子處的次數分別為 \(\{a_1,a_2,...,a_k\}\)\(\{b_1,b_2,...,b_k\}\),那麼 \(\gcd(a,b)\) 的次數為 \(\{\min(a_1,b_1),\min(a_2,b_2),...,\min(a_k,b_k)\}\)

  • \(\text{lcm}\) 的本質:設兩個數 \(a,b\) 在每個質因子處的次數分別為 \(\{a_1,a_2,...,a_k\}\)\(\{b_1,b_2,...,b_k\}\),那麼 \(\text{lcm}(a,b)\) 的次數為 \(\{\max(a_1,b_1),\max(a_2,b_2),...,\max(a_k,b_k)\}\)

  • 莫比烏斯反演的本質:莫比烏斯反演其實是對高維陣列進行差分,差分的方式是容斥。

所以,我們做一些莫比烏斯反演題目,可能完全不需要求莫比烏斯函式!利用 FWT 高維差分方式,同樣可以實現莫反的效果,而且時間複雜度降到 \(O(n\log\log n)\)

  • 莫反問題的本質:莫反的本質是高位變換,變換求的其實就是 \(\gcd\) 卷積,這樣我們可以直接用 FWT 中 and 卷積的方法——先做一遍高位字尾和,然後再差分回去。

Powerful Number

  • 定義:不存在次數為 \(1\) 的質因子的正整數,下面簡稱 PN。
    由此可以得到 PN 的表示方式:\(a^2b^3\),其中 \(b\) 不存在平方因子,這構成單射。

PN 有一個十分優秀的性質:\(n\) 以內 PN 的數量為 \(O(\sqrt n)\)

證明 PN 可表示為 $a^2b^3$,可得 $b\le \sqrt[3]{\dfrac n{a^2}}$ $$\begin{aligned} O(\sum_{a = 1}^{\sqrt n} \left(\frac n{a^2}\right)^{\frac 13}) &= O(n^{\frac 13} \sum_{a = 1}^{\sqrt n} a^{-\frac 23}) \\ &= O(n^{\frac 13} \cdot n^{\frac 16}) \\ &= O(\sqrt n) \end{aligned}$$
  • 質數擬合:對於積性函式 \(f\),我們構造一個積性函式 \(g\),滿足在每個質數 \(p\) 處都有 \(f(p)=g(p)\),但對於 \(k\ge 2\) 不一定滿足 \(f(p^k)=g(p^k)\)

考慮此時我們需要求 \(S_f(n)\),我們可以擬合一個 \(g\),並且 \(g\) 的塊篩是可求的。設 \(f = g * h\),則

\[S_f(n) = \sum_{i = 1}^n h(i) S_g(\lfloor\frac ni \rfloor) \]

現在的任務是求出 \(h\)。注意到對於每個質數 \(p\),都有 \(f(p) = g(p)h(1) + g(1)h(p) = g(p) + h(p)\),而又知 \(f(p) = g(p)\) 可得 \(h(p)\)

由於 \(f,g\) 都是積性函式,所以 \(h\) 也是積性函式,這說明當 \(i\) 中存在 \(1\) 次質因子時,\(h(i) = 0\),那麼 \(h\) 只有在 PN 處有值!

所以我們可以爆搜找出 \(n\) 以內的所有 PN 並按質因子分開計算出對應的 \(h\) 值,這部分時間複雜度為 \(O(\sqrt n)\)

\(S_g\) 需要利用杜教篩求出,時間複雜度為 \(O(n^{\frac 23})\)

相關文章