[筆記亂寫]關於數論函數(關於卷積的一些證明+杜教篩)


數論GPBH,所以開坑

(照抄)參考

常見的數論函數

莫比烏斯函數$\mu$

1.定義:

  • $\mu (1)=1$
  • 若$d$沒有平方因子,$\mu (d) = (-1)^k$,$k$為$d$的質因數個數
  • 否則$\mu (d)=0$

2.性質:

  • 對於任意正整數$n$,有$\sum \limits_{d|n}\mu (d)=[n=1]$。
  • $\mu$為積性函數。
  • $\sum \limits _{d|n}\frac{\mu(d)}{d}=\frac{\phi(n)}{n}$

歐拉函數$\varphi $

1.定義:

  • $\varphi (n)= \sum \limits _{i=1}^{n} [gcd(i,n)=1]$

2.性質:

  • $\sum \limits _{d|n} \varphi (d)=n$
  • $\varphi(n) = n * \prod (1 - \frac{1}{p_i})$
  • $a^{\varphi(m)} \equiv 1 \pmod {m}$
  • 對於$n=p^k$,有$\varphi(n) = (p - 1) * p^{k - 1}$
  • 積性函數

約數個數$d()$

1.定義:

  • RT

2.性質:積性函數

約數和$\sigma ()$

1.定義:

  • RT

2.性質:積性函數

元函數$\epsilon$

1.定義:

  • $\epsilon(n)=[n=1]$

2.性質:

  • 對於任意積性函數$f$,有$f*\epsilon=f$。
  • 積性函數

單位函數$I()$

1.定義:

  • $I(n)$恆為1。

2.性質:

  • 積性函數

恆等函數$id()$

1.定義:

  • $id(n)=n$

2.性質:

  • 積性函數

 

 狄利克雷卷積

  • 定義:對於兩個數論函數$f$和$g$,它們的狄利克雷卷積為$(f*g)(n)=\sum \limits_{d|n} f(d) \cdot g(\frac{n}{d})$。
  • 性質:狄利克雷卷積滿足交換律、結合律和分配律。即:$f*g=g*f$       $(f*g)*h=f*(g*h)$       $(f+g)*h=f*h+g*h$

狄利克雷卷積的一些應用:

1.證明莫比烏斯反演:

假設我們已知:$F(n)=\sum_{d|n}f(d)$

考慮利用數論函數將它化成卷積的形式:$F=f*I$

兩邊卷上$\mu$,得到:

$F*\mu=f*I*\mu$

結合律?

$...=f*(I*\mu)$

回憶一下$\mu$的性質:

$\sum \limits _{d|n} \mu (d)= [n=1]$

也可以寫成:

$I* \mu = \epsilon$

那么有$...=f*\epsilon=f$

把它重新寫成普遍形式:$f=F*\mu \rightarrow f(n)=\sum_{d|n}\mu(d)\cdot F(\frac{n}{d})$

 

2.證明$\frac{\varphi(n)}{n}=\sum \limits _{d|n}\frac{\mu(d)}{d}$

還記得$\varphi$的性質嘛?

$\sum \limits _{d|n} \varphi (d)=n$

表示成卷積的形式就是$\varphi * I = id$

跟上一個證明類似,如果兩邊都卷上$\mu$:

$\varphi * I * \mu = id * \mu$

$\varphi * \epsilon =id* \mu $

$\varphi = id * \mu \rightarrow \sum \limits _{d|n} \mu (d) \cdot \frac{n}{d}$

兩邊同時除以$n$即得證。

杜教篩

終於到了這個大坑……

杜教篩解決的是要求在低於線性時間內求積性函數前綴和的問題。

假設我們要求 $S(n)=\sum \limits _{i=1}^n f(i)$

那么首先構造兩個積性函數$g$和$h$,滿足$h=f*g$。

顯然有:

$\sum \limits _{i=1}^{n}h(i)=\sum \limits _{i=1}^{n}\sum \limits _{d|i}g(d)\cdot f(\frac{i}{d})\\\to =\sum \limits_{d=1}^{n}g(d)\cdot\sum \limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}f({i})$

停一下。這一步可能會看起來比較懵逼,其實就是把原來先枚舉每個數再枚舉它的因數,變成了枚舉因數並考慮$n$的范圍內有多少個數包含它。

我們繼續:

$\sum \limits _{i=1}^{n}h(i)=\sum \limits _{d=1}^{n}g(d)\cdot S(\lfloor\frac{n}{d}\rfloor)$

拆出第一項:

$\sum \limits _{i=1}^{n}h(i)=g(1)\cdot S(n)+\sum \limits _{d=2}^{n}g(d)\cdot S(\lfloor\frac{n}{d}\rfloor)$

$g(1)S(n)=\sum \limits _{i=1}^{n}h(i)-\sum \limits _{d=2}^{n}g(d)\cdot S(\lfloor\frac{n}{d}\rfloor)$

到了這步,如果你能快速求出$h(i)$的前綴和,就可以通過對后面那項進行整除分塊來求出$S(n)$。時間復雜度為$O(n^{\frac{2}{3} })$。

比如我們要求的$f$是$\mu$,那根據$\mu*I=\epsilon$可以得到:

$S(n)=1-\sum \limits _{d=2}^{n}S(\lfloor\frac{n}{d}\rfloor)$

篩$\varphi$也是同理,利用$\varphi*I=id$即可。(其實是我懶得寫了所以就同理啦QAQ)

 

(然而代碼實現還不是很熟練……先咕了)

 

 

To Be Continued...


免責聲明!

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



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