數論基礎(OWO大佬上課筆記m)

#目錄#

厄拉多塞篩素數

歐拉篩素數

最大公約數

莫比烏斯函數

歐拉函數(待更)

費馬小定理(待更)

歐拉函數(待更)

擴展歐拉函數(待更)

二次探測定理(待更)

(PS: 由於博主水平有限,如有錯誤還望大家包涵。)

厄拉多塞篩素數

樸素實現:從小到大枚舉xx,將xx的倍數標記爲合數。
時間複雜度(調和級數):

x=2nnxnx=1n1x=O(nlnn) \sum_{x=2}^n \lfloor\frac n x \rfloor \leqslant n\sum_{x=1}^n \frac1 x = O(n ln n)

優化實現:從小到大枚舉xx,若xx爲素數,則將xx的倍數標記爲合數:
時間複雜度(梅滕斯第二定理):

p=Pnnpnp=Pn1p=O(nlnlnn) \sum_{p=\Bbb P}^n \lfloor\frac n p \rfloor \leqslant n\sum_{p=\Bbb P}^n \frac1 p = O(n \ln \ln n)

歐拉篩素數

實現:從小到大枚舉數xx,再從小到大枚舉素數pp,將pxpx標記爲合數,直到pxp\mid x
時間複雜度:O(n)O(n)

貝祖定理

xyax+by=cgcd(a,b)=c 關於 x、y 的方程 ax+by=c有解,當且僅當\gcd(a,b)=c

歐幾里得算法

由貝祖定理可以推出:
gcd(a,b)=gcd(b,ab) \gcd(a,b)=\gcd(b,a-b)
反覆執行減法可以得到:
gcd(a,b)=gcd(b,a%b) \gcd(a,b)=\gcd(b,a\%b)

擴展歐幾里得算法

莫比烏斯函數

μ(n)={(1)γ,n=p1p2p3pγ1,n=10,else cases \mu(n) = \begin{cases} (-1)^\gamma, & \text{n=$p_1p_2p_3\cdots p_\gamma$} \\ 1, & \text{n=1}\\ 0, & \text{else cases} \end{cases}

有的小朋友們可能會問了,莫比烏斯函數有什麼作用呢?
其實莫比烏斯函數最普遍的用處是容斥原理篩互質的數
比如對於此問題:

tot=np1Pnp12+p1,p2Pnp12p22p1,p2,p3Pnp12p22p32+ tot=n-\sum_{p_1\in \Bbb P } \lfloor \frac n {p_1^2} \rfloor +\sum_{p_1,p_2\in \Bbb P } \lfloor \frac n {p_1^2p_2^2} \rfloor -\sum_{p_1,p_2,p_3\in \Bbb P } \lfloor \frac n {p_1^2p_2^2p_3^2} \rfloor +\cdots

就可以通過莫比烏斯函數轉化爲以下形式:

x1μ(x)nx2 \sum_{x\geqslant1} \mu(x)\lfloor \frac n{x^2} \rfloor

那麼問題來了,究竟怎麼求莫比烏斯函數呢?
其實用遞推的方法就很簡單了:

首先,因爲:

gcd(p,q)=1,μ(pq)=μ(p)μ(q) 對於任意gcd(p,q)=1,有\mu(pq)=\mu(p)\mu(q)

所以,對於:

pP,xN{p, μ(p)=1; pxpx,μ(px)=μ(p)μ(x)=μ(x)pxpx,μ(px)=0 p\in \Bbb P , x\in \Bbb N^* \begin{cases} p, & \text { $\mu(p)=-1;$ } \\ px且p\nmid x, &\text{$ \mu(px)=\mu(p)\mu(x)=-\mu(x) $}\\ px且p\mid x, &\text{$ \mu(px)=0 $} \end{cases}

然後直接遞歸就vans

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章