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

數論GPBH,因此開坑html

(照抄)參考函數

常見的數論函數

莫比烏斯函數$\mu$

1.定義:ui

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

2.性質:spa

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

歐拉函數$\varphi $

1.定義:htm

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

2.性質:blog

  • $\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.定義:get

  • RT

2.性質:積性函數it

約數和$\sigma ()$

1.定義:io

  • RT

2.性質:積性函數gc

元函數$\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...

相關文章
相關標籤/搜索