1. 程式人生 > >數論函式基礎

數論函式基礎

數論函式

\(Z_{+} \rightarrow C\) 的函式

積性函式

\(\forall~(a,b)=1:~f(ab) = f(a)f(b)\)

狄利克雷卷積

\((f*g)(n)=\sum_{d|n} f(d) g(n/d)\)

常用卷積:

  • \(\sigma_0=1*1\)
  • \(\sigma_1=id*1\)
  • \(\varphi=\mu*1\)
  • \(\mu*1=e\)

運算律:

  • \(f * g = g * f\)
  • \((f * g) * h = f * (g * h)\)

因為結合律,所以 \(f^{k}\) 可以倍增計算

尤拉函式

\(\varphi(n)\) 表示 \([1,n]\) 中與 \(n\) 互質的數的個數,\(\varphi(1)=1\)\(\varphi(6) = 2\)

計算 \([1,n]\) 中與 \(n\) 互質的數的和時,\(n \le 2\) 即為 1,否則為 \(\varphi(n) \dfrac{n}{2}\)

莫比烏斯反演

 設 \(F=f*1\),則 \(F*\mu=f*1*\mu=f*(1*\mu)=f\)

即若 \(F(x)=\sum_{d|x} f(d)\),則 \(f(x)=\sum_{d|x} F(d) \mu(x/d)\)

常用技巧:

  • \(\lfloor {\dfrac{n}{d}} \rfloor\)
    只有 \(2 \sqrt{n}\) 個取值,可以分塊快速計算
  • 遇到 GCD 求和,考慮每個 GCD 對答案的貢獻
  • 列舉因數可以轉換為列舉倍數,一般情況下更方便(CF235E)

題目

CF235E

bzoj2301

bzoj2820

bzoj3529

bzoj1257

bzoj2705

bzoj2226

bzoj2005

bzoj2693

bzoj2694