其實主要是想發一下線性篩的板子,包括線性篩質數,約數個數,尤拉函式和莫比烏斯函式。
有些也會有一點簡單的證明。
線性篩質數就不說啦。
然後加乙個篩尤拉函式。
當\(i\)為質數的時候,自然\(\varphi(i) = i - 1\)。
令\(n = mp\),
當\(p \nmid m\)的時候,有\(\varphi(n) = \varphi(m) * \varphi(p) = \varphi(m) * (p - 1)\)。
否則有\(\varphi(n) = \varphi(m) * p\)。
證明一下吧:
首先\(p \nmid m\)時,根據積性,\(\varphi(n) = \varphi(m) * (p - 1)\)。
考慮另一種情況,
若\(p \mid m\),令\(m = k * p ^ x\),這樣保證了\(k, p\)互質。
所以\[\begin
\varphi(n)
&= \varphi(k) * \varphi(p ^ ) \\
&= \varphi(k) * p ^ x * (p - 1) \\
\end
\]然後看等式右邊:
\[\begin
\varphi(m) * p
&= \varphi(k) * \varphi(p ^ x) * p \\
&= \varphi(k) * p ^ * (p - 1) * p \\
&= \varphi(k) * p ^ x * (p - 1)
\end
\](也不知道這算不算證明)
另一種證明\(\varphi(n) = \varphi(m) * p\)的方法是把\(\varphi(n)\)和\(\varphi(m)\)相除,並用\(\varphi(n) = n * \prod_ (1 - \frac)\)開啟,約分後就是\(p\)了。
至於篩莫比烏斯函式,就更簡單了。
如果\(n\)為質數,則\(\mu(n) = -1\)。
若\(p \mid m\),則\(\mu(n) = 0\),
否則\(\mu(n) = - \mu(m)\)。
最後是篩約數個數。
首先得知道這幾個理論基礎:
1.記\(n = \prod p _ i ^ \),那麼\(n\)的約數個數為\(\prod (a_i + 1)\),就是列舉每乙個約數選幾個。
2.線篩的時候,每乙個數是被他的最小素因子篩去,如果\(prime[j] \mid i\),那麼\(prime[j]\)也是\(i\)的最小素因子。
我們令\(y[n]\)表示\(n\)的約數個數,\(d[n]\)表示\(n\)的最小素因子的個數。
那麼,1.如果\(n\)為質數,顯然有\(y[n] = 2, d[n] = 1\)。
2.如果\(n\)為合數,令\(n = i *prime[j]\),
(1)如果\(prime[j] \nmid i\),那麼\(d[n] = 1, y[n] = y[i] * y[prime[j]] = y[i] * 2\)(積性)。
(2)如果\(prime[j] \mid i\),那麼\(n\)和\(i\)的最小素因子都是\(prime[j]\),且\(d[n] = d[i] + 1\)。這時候算約數個數,把原來的除掉,乘以新的貢獻即可:\(y[n] = y[i] * \frac\)。
in void init()
for(int j = 1; j <= pcnt && i * prim[j] < maxn; ++j)
else
}}}
線性篩尤拉函式學習筆記
我回來了,在被模板蹂躪之後。預先規定 參考篩素數的線性篩,當篩到數字 i 時,小於 i 的數的尤拉函式和小於 i 的質數已經篩出,利用 i 和 s 向後更新。對於數字 i 如果此時 f i 0 說明這個數的最小質因數不會在 left 2,i 1 right 的範圍內出現,也易得數字 i 是個質數,根...
數學板塊學習之埃氏篩法與線性篩
埃氏篩法簡單說就是先列出2 n的值,其中遇見第乙個素數2,於是將所有2的倍數刪去,繼續往下走,下乙個素數是3,再將所有3的倍數刪去。int prime maxn 10 bool vis maxn 10 int tot 0 void init 相對於埃氏篩法中對每個素數我們都將其倍數篩去,也就導致有許...
數論學習筆記之尤拉函式
最近又開始搞數論了 今天是尤拉函式,對於一些性質或定理,我可能會證明啥的 首先尤拉函式 varphi n 指不超過 n 與 n 互素的數的個數。比如 varphi 8 4 性質 對於 n ldots 有 varphi n varphi varphi varphi ldots varphi 然後就是各...