#目錄#
厄拉多塞篩素數
歐拉篩素數
最大公約數
莫比烏斯函數
歐拉函數(待更)
費馬小定理(待更)
歐拉函數(待更)
擴展歐拉函數(待更)
二次探測定理(待更)
(PS: 由於博主水平有限,如有錯誤還望大家包涵。)
厄拉多塞篩素數
樸素實現:從小到大枚舉x,將x的倍數標記爲合數。
時間複雜度(調和級數):
x=2∑n⌊xn⌋⩽nx=1∑nx1=O(nlnn)
優化實現:從小到大枚舉x,若x爲素數,則將x的倍數標記爲合數:
時間複雜度(梅滕斯第二定理):
p=P∑n⌊pn⌋⩽np=P∑np1=O(nlnlnn)
歐拉篩素數
實現:從小到大枚舉數x,再從小到大枚舉素數p,將px標記爲合數,直到p∣x。
時間複雜度:O(n)
貝祖定理
關於x、y的方程ax+by=c有解,當且僅當gcd(a,b)=c
歐幾里得算法
由貝祖定理可以推出:
gcd(a,b)=gcd(b,a−b)
反覆執行減法可以得到:
gcd(a,b)=gcd(b,a%b)
擴展歐幾里得算法
莫比烏斯函數
μ(n)=⎩⎪⎨⎪⎧(−1)γ,1,0,n=p1p2p3⋯pγn=1else cases
有的小朋友們可能會問了,莫比烏斯函數有什麼作用呢?
其實莫比烏斯函數最普遍的用處是容斥原理篩互質的數
比如對於此問題:
tot=n−p1∈P∑⌊p12n⌋+p1,p2∈P∑⌊p12p22n⌋−p1,p2,p3∈P∑⌊p12p22p32n⌋+⋯
就可以通過莫比烏斯函數轉化爲以下形式:
x⩾1∑μ(x)⌊x2n⌋
那麼問題來了,究竟怎麼求莫比烏斯函數呢?
其實用遞推的方法就很簡單了:
首先,因爲:
對於任意gcd(p,q)=1,有μ(pq)=μ(p)μ(q)
所以,對於:
p∈P,x∈N∗⎩⎪⎨⎪⎧p,px且p∤x,px且p∣x, μ(p)=−1; μ(px)=μ(p)μ(x)=−μ(x)μ(px)=0
然後直接遞歸就vans