積性函數相關學習筆記


線性篩

也就是我。

首先在埃氏篩里面我們是對於每個素數篩一遍,因此復雜度是 \(O(n\log\log n)\) 的。

然后線性篩我們對所有數都篩一遍。注意到每個合數 \(n\) 都有最小質因數 \(x\),我們就讓它在被 \(\frac{n}{x}\) 篩掉。

反向考慮,不難發現 \(n\) 能且只能乘一個不超過自身最小質因數的數去篩。

這個線性篩是非常優美的,我們可以發現每個數剛好只被篩了一次,所以復雜度顯然為 \(O(n)\)

每個數只被篩一次是一個非常優美的性質,我們顯然可以用它來搞點事情。

整除分塊

\[\sum f(i)g(\lfloor\frac{n}{i}\rfloor) \]

這個式子在我們知道快速求 \(f,g\) 任意一個的前綴和時可以 \(O(\sqrt n)\) 搞定。

不難發現 \(i=[1,\sqrt n]\) 的時候 \(\lfloor\frac{n}{i}\rfloor\) 只有 \(\sqrt n\) 個取值。

不難發現 \(i>\sqrt n\)\(\lfloor\frac{n}{i}\rfloor<\sqrt n\),因此也只有 \(\sqrt n\) 個取值。

綜上,\(i\)\(\lfloor\frac{n}{i}\rfloor\) 都只有 \(\sqrt n\) 個取值,枚舉一個取值的時候顯然能得到另外一個取值的區間。

莫比烏斯函數

\(n\) 的莫比烏斯函數為 \(\mu(n)\)

如果 \(n\) 有平方因子,則 \(\mu(n)=0\)

如果 \(n\) 沒有平方因子,設 \(n\)\(t\) 個質因子,則 \(\mu(n)=(-1)^t\)

我們顯然可以使用線性篩篩 \(\mu(n)\),也可以在 \(O(\sqrt n)\) 的復雜度內計算單個 \(\mu(n)\)

歐拉函數

\(n\) 的歐拉函數為 \(\varphi(n)\)

\(\varphi(n)\) 等於小於等於 \(n\) 且與 \(n\) 互質的整數個數。

\(n\) 的唯一分解為 \(\prod p_i^{k_i}\),則 \(\varphi(n)=n\prod(1-p_i)\)

我們顯然可以使用線性篩篩 \(\varphi(n)\),也可以在 \(O(\sqrt n)\) 的復雜度內計算單個 \(\varphi(n)\)

例1 P2398

\[Ans=\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j) \]

展開 $$Ans=\sum_{d=1}^nd\sum_{i=1}^n\sum_{j=1}^n[\gcd(i,j)=d]$$ $$Ans=\sum_{d=1}^nd\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{n}{d}}[\gcd(i,j)=1]$$ $$F(n)=\sum_{i=1}^n\sum_{j=1}^n[\gcd(i,j)=1]$$ $$F(n)=2\sum_{i=1}^n\sum_{j=1}^{i}[\gcd(i,j)=1]-1$$ $$F(n)=2\sum_{i=1}^n\varphi(i)-1$$ $$Ans=\sum_{d=1}^ndF(\lfloor\frac{n}{d}\rfloor)$$ 於是預處理 $O(n)$ 可以做到 $O(1)$ 算 $F(n)$。

一個性質

\[\sum_{d|n}\mu(d)=[n=1] \]

顯然我們把這個東西單獨拎出來肯定是有用的,因此記住它。

數論函數

定義域 \(=\mathbb{Z}^+\),值域 \(\in\mathbb{C}\) 的函數就是數論函數。

積性函數

積性函數都是數論函數

對於任意 \(\gcd(n,m)=1\) 都有 \(f(nm)=f(n)f(m)\) 的數論函數稱為積性函數。

常見的積性函數有以下幾種:

  • \(\varphi(n)\),歐拉函數。
  • \(\mu(n)\),莫比烏斯函數。
  • \(d(n)\),因數個數函數。
  • \(\sigma(n)\),因數和函數。

積性函數基本都可以通過線性篩來 \(O(n)\) 預處理。

對於任意正整數 \(n,m\) 都有 \(f(nm)=f(n)f(m)\) 的數論函數稱為完全積性函數。

常見的完全積性函數有以下幾種:

  • \(\epsilon(n)\),元函數,\(\epsilon(n)=[n=1]\)
  • \(I(n)\),恆等函數,\(I(n)=1\)
  • \(id(n)\),單位函數,\(id(n)=n\)

狄利克雷卷積

和生成函數一樣,兩個數論函數也可以卷積。

\[(f*g)(n)=\sum_{ij=n}f(i)g(j) \]

於是有一些很顯然的性質。

  • \(f*g=g*f\),交換律。
  • \((f*g)*h=f*(g*h)\),結合律。
  • \((f+g)*h=f*h+g*h\),分配律。
  • \(f*\epsilon=f\)
  • \(\mu*I=\epsilon\),也就是上面的“一個性質”。
  • \(\mu*id=\varphi\)
  • \(\varphi*I=id\)

莫比烏斯反演

這是第一個難點。

先說結論。

\[F(n)=\sum_{d|n}f(d)\iff f(n)=\sum_{d|n}\mu(\frac{n}{d})F(d) \]

為什么呢?

\[F=f*I \]

\[F*\mu=f*(\mu*I) \]

\[F*\mu=f*\epsilon \]

\[F*\mu=f \]

然后我們轉置反演矩陣(此部分待補充)可以得到另一種形式。

\[F(n)=\sum_{n|d}f(d)\iff f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d) \]

例2 P3455

\[\sum_{i=1}^a\sum_{j=1}^b[\gcd(i,j)=d] \]

展開 記 $n=\frac{a}{d}$,$m=\frac{b}{d}$。 $$Ans=\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)=1]$$ $$Ans=\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|\gcd(i,j)}\mu(d)$$ $$Ans=\sum_{d=1}^{n}\mu(d)\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor$$

例3 P6810

\[Ans=\sum_{i=1}^n\sum_{j=1}^md(i)d(j)d(\gcd(i,j)) \]

展開 $$Ans=\sum_{t=1}^{\min(n,m)}d(t)\sum_{i=1}^{\frac{n}{t}}\sum_{j=1}^{\frac{m}{t}}d(it)d(jt)[\gcd(i,j)=1]$$ $$Ans=\sum_{t=1}^{\min(n,m)}d(t)\sum_{i=1}^{\frac{n}{t}}\sum_{j=1}^{\frac{m}{t}}d(it)d(jt)\sum_{k|\gcd(i,j)}\mu(k)$$ $$Ans=\sum_{t=1}^{\min(n,m)}d(t)\sum_{k}\sum_{i=1}^{\frac{n}{tk}}\sum_{j=1}^{\frac{m}{tk}}d(itk)d(jtk)$$ $$Ans=\sum_{T=1}^{\min(n,m)}\sum_{t|T}d(t)\mu(\frac{T}{t})\sum_{i=1}^{\frac{n}{T}}\sum_{j=1}^{\frac{m}{T}}d(iT)d(jT)$$ $$Ans=\sum_{T=1}^{\min(n,m)}\sum_{i=1}^{\frac{n}{T}}\sum_{j=1}^{\frac{m}{T}}d(iT)d(jT)$$

例4

\[Ans=\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)\in P] \]

有多組詢問。

展開 $$Ans=\sum_{d\in P}\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)=d]$$ $$f(d)=\sum_{i=1}^{n}\sum_{j=1}^{m}[\gcd(i,j)=d]$$ $$F(d)=\sum_{i=1}^{n}\sum_{j=1}^{m}[d|\gcd(i,j)]=\lfloor\frac{n}{d}\rfloor\lfloor\frac{m}{d}\rfloor$$ $$F(n)=\sum_{n|d}f(d)$$ $$f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)$$ $$Ans=\sum_{d\in P}\sum_{d|t}\mu(\frac{t}{d})\lfloor\frac{n}{t}\rfloor\lfloor\frac{m}{t}\rfloor$$ $$Ans=\sum_{t=1}^n\lfloor\frac{n}{t}\rfloor\lfloor\frac{m}{t}\rfloor\sum_{d|t,d\in P}\mu(\frac{t}{d})$$

例5

\[Ans=\sum_{i=1}^{n}\sum_{j=1}^{m}\text{lcm}(i,j) \]

有多組詢問。

展開 $$Ans=\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{ij}{\gcd(i,j)}$$ $$Ans=\sum_{d=1}^n\frac{1}{d}\sum_{i=1}^{n}\sum_{j=1}^{m}ij[\gcd(i,j)=d]$$ $$Ans=\sum_{d=1}^nd\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{m}{d}}ij[\gcd(i,j)=1]$$ $$F(n,m)=\sum_{i=1}^n\sum_{j=1}^mij[\gcd(i,j)=1]$$ $$F(n,m)=\sum_{i=1}^n\sum_{j=1}^mij\sum_{d|\gcd(i,j)}\mu(d)$$ $$F(n,m)=\sum_{d=1}^{\min(n,m)}\mu(d)d^2\sum_{i=1}^{\frac{n}{d}}i\sum_{i=1}^{\frac{m}{d}}j$$ $$F(n,m)=\sum_{d=1}^{\min(n,m)}\mu(d)d^2S(\frac{n}{d})S(\frac{m}{d})$$ $$Ans=\sum_{d=1}^ndF(\frac{n}{d},\frac{m}{d})$$ $$Ans=\sum_{t=1}^nt\sum_{d=1}^{\min(\frac{n}{t},\frac{m}{t})}\mu(d)d^2S(\frac{n}{dt})S(\frac{m}{dt})$$ $$Ans=\sum_{T=1}^{\min(n,m)}S(\frac{n}{T})S(\frac{m}{T})T\sum_{d|T}\mu(d)d$$ $f(n)=\sum\limits_{d|n}\mu(d)d$ 是個積性函數,因此我們可以線性篩。

例6 AT5200

\[Ans=\sum_{i=1}\sum_{j=1}\frac{c_ic_j}{\gcd(i,j)} \]

展開 $$Ans=\sum_{d=1}\frac{1}{d}\sum_{i=1}\sum_{j=1}c_{i}c_{j}[\gcd(i,j)=d]$$ $$Ans=\sum_{d=1}\frac{1}{d}\sum_{i=1}\sum_{j=1}c_{id}c_{jd}[\gcd(i,j)=1]$$ $$F(k)=\sum_{i=1}\sum_{j=1}c_{ik}c_{jk}[\gcd(i,j)=1]$$ $$F(k)=\sum_{i=1}\sum_{j=1}c_{ik}c_{jk}\sum_{d|\gcd(i,j)}\mu(d)$$ $$F(k)=\sum_{d=1}\mu(d)(\sum_{i=1}c_{idk})^2$$

例7 P3312

\[Ans=\sum_{i=1}^n\sum_{j=1}^m[\sigma(\gcd(i,j)\leq a]\sigma(\gcd(i,j)) \]

有多組詢問。

展開 $$\sigma'(d)=\begin{cases}\sigma(d)&(d\leq a)\\ 0&(d>a)\end{cases}$$ $$\sum_{d=1}\sigma'(d)\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=d]$$ $$\sum_{d=1}\sigma'(d)\sum_{i=1}^{\frac{n}{d}}\sum_{j=1}^{\frac{m}{d}}\sum_{t|\gcd(i,j)}\mu(t)$$ $$\sum_{t=1}^{\min(n,m)}\mu(t)\sum_{d=1}\sigma'(d)\sum_{i=1}^{\frac{n}{dt}}\sum_{j=1}^{\frac{m}{dt}}1$$ $$\sum_{T=1}^{\min(n,m)}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum_{t|T}\mu(t)\sigma'(\frac{T}{t})$$ 大力離線詢問維護 $\sum\limits_{t|T}\mu(t)\sigma'(\frac{T}{t})$ 就可以做到 $O(n\log^2n+q\sqrt n\log n)$ 了。

例8 P3704

\[\prod_{i=1}^n\prod_{j=1}^mf_{\gcd(i,j)} \]

有多組詢問。

展開 $$F(x)=\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=x]$$ $$Ans=\prod_{i=1}^{\min(n,m)}f_{i}^{F(i)}$$ $$F(x)=\sum_{i=1}^{\min(\frac{n}{x},\frac{m}{x})}\mu(i)\lfloor\frac{n}{ix}\rfloor\lfloor\frac{m}{ix}\rfloor$$ $$Ans=\prod_{T=1}^{\min(n,m)}\prod_{i|T}f_i^{\mu(\frac{T}{i})\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor}$$ $$Ans=\prod_{T=1}^{\min(n,m)}(\prod_{i|T}f_i^{\mu(\frac{T}{i})})^{\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor}$$

例9 P6156

\[\sum_{i=1}^n\sum_{j=1}^n(i+j)^k\mu(\gcd(i,j))^2\gcd(i,j) \]

展開 $$\sum_{d=1}d^{k+1}\mu(d)^2\sum_{i=1}^\frac{n}{d}\sum_{j=1}^\frac{n}{d}(i+j)^k[\gcd(i,j)=1]$$ $$\sum_{d=1}d^{k+1}\mu(d)^2\sum_{i=1}^\frac{n}{d}\sum_{j=1}^\frac{n}{d}(i+j)^k\sum_{t|\gcd(i,j)}\mu(t)$$ $$\sum_{d=1}d^{k+1}\mu(d)^2\sum_{t=1}\mu(t)t^k\sum_{i=1}^\frac{n}{dt}\sum_{j=1}^\frac{n}{dt}(i+j)^k$$ $$\sum_{T=1}T^k\sum_{d|T}d\mu(d)^2\mu(\frac{T}{d})\sum_{i=1}^\frac{n}{T}\sum_{j=1}^\frac{n}{T}(i+j)^k$$ $\sum\limits_{d|T}d\mu(d)^2\mu(\frac{T}{d})$ 是個積性函數,顯然可以線性篩。 $T^k$ 是個積性函數,顯然也可以線性篩。 $$\sum_{i=1}^{n}\sum_{j=1}^{n}(i+j)^k-\sum_{i=1}^{n-1}\sum_{j=1}^{n-1}(i+j)^k=2\sum_{i=1}^{n-1}(i+n)^k+(2n)^k$$ 因此也可以遞推,這道題就做完了。

杜教篩

對於一些積性函數 \(f(x)\),我們可以使用杜教篩在 \(O(n^{\frac{2}{3}})\) 的復雜度內求前綴和。

\[F(n)=\sum_{i=1}^nf(i) \]

\[f*g=h \]

\[\sum_{i=1}^{n}h(i)=\sum_{i=1}^n\sum_{d|i}g(d)f(\frac{i}{d}) \]

\[\sum_{i=1}^{n}h(i)=\sum_{d=1}^ng(d)F(\frac{n}{d}) \]

\[\sum_{i=1}^{n}h(i)=g(1)F(n)+\sum_{d=2}^ng(d)F(\frac{n}{d}) \]

\[g(1)F(n)=\sum_{i=1}^{n}h(i)-\sum_{d=2}^ng(d)F(\frac{n}{d}) \]

如果我們能在 \(O(1)\) 的時間內求出 \(h(i)\) 的前綴和,並處理出 \(n^{\frac{2}{3}}\) 以內的 \(F(i)\),整體算法復雜度為 \(O(n^{\frac{2}{3}})\)

杜教篩使用的唯一前提就是你能找到一個很優美的 \(g\)

min_25篩

一些記號

對於所有 \(f(p)\) 可以用一個多項式表示,且 \(f(p^k)\) 可以快速計算的積性函數 \(f(x)\),我們可以使用min_25篩在 \(O(\frac{n^{\frac{3}{4}}}{\log n}+n^{1-\epsilon})\) 的復雜度內求在 \(\frac{n}{d}\) 處的前綴和。

由於我太菜了不會證復雜度,上面那坨東西可以大概理解為能跑 \(10^{11}\)

首先,我們新定義一個完全積性函數 \(g(x)\),其在 \(x\in P\) 處值為 \(g(x)\)

下文中,我們記 \(P_j\) 為第 \(j\) 個質數,\(\min(n)\) 為一個數的最小質因數。不難注意到 \(\min(n)\leq\sqrt n\)

第一步

\[G_{i,j}=\sum_{k=2}^i[i\in P\text{ or }\min(i)>P_j]g(k)\\ G_{i,0}=\sum_{k=2}^ig(k)\\ G_{i,j}=G_{i,j-1}-\sum_{k=2}^i[i\notin P\text{ and }\min(k)=P_{j}]g(k)\\ G_{i,j}=G_{i,j-1}-g(P_j)(\sum_{k=2}^\frac{i}{P_{j}}[\min(k)\geq P_{j}]g(k))\\ G_{i,j}=G_{i,j-1}-g(P_j)(G_{\frac{i}{P_j},j-1}-\sum_{k=2}^{P_{j-1}}[i\in P]g(k))\\ \]

顯然 \(\sum\limits_{i=1}^n[i\in P]f(i)=G_{n,k}\),其中 \(k\)\(\sqrt n\) 內質數個數。

第二步

\[F_{i,j}=\sum_{k=2}^i[\min(i)>P_j]f(k)\\ F_{i,k}=G_{i,k}\\ F_{i,j}=\sum_{k=P_{j+1}}^i[i\in P\text]f(k)+\sum_{t=j+1}\sum_{k=2}^i[i\notin P\text{ and }\min(i)=P_t]f(k)\\ F_{i,j}=\sum_{k=P_{j+1}}^i[i\in P\text]f(k)+\sum_{t=j+1}\sum_{e=1}f(P_t^e)\sum_{k=2}^{\frac{n}{P_t^e}}[\min(i)>P_t]f(k)\\ \]

顯然 \(F_{n,0}\) 即為所求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM