數論函數學習筆記之線性篩
阿新 • • 發佈:2018-12-12
inline pri lse lin ini arp 學習筆記 學習 mod
???\(= \varphi(k) * p ^ x * (p - 1)\)
然後看等式右邊:
\(\varphi(m) * p = \varphi(k) * \varphi(p ^ x) * p\)
??????$ = \varphi(k) * p ^ {x - 1} * (p - 1) * p$
??????$ = \varphi(k) * p ^ x * (p - 1)$
(也不知道這算不算證明)
至於\(m \ \ mod \ \ p \neq 0\)時,根據積性,\(\varphi(n) = \varphi(m) * (p - 1)\)。
至於篩莫比烏斯函數,就更簡單了。
如果\(n\) 為質數,則\(\mu(n) = -1\)。
若\(m \ \ mod \ \ p == 0\),則\(\mu(n) = 0\),
否則\(\mu(n) = - \mu(m)\)。
其實主要是想發一下線性篩的板子,包括線性篩質數,歐拉函數和莫比烏斯函數。
當然也會有一點簡單的證明。
線性篩質數就不說啦。
然後加一個篩歐拉函數。
當\(i\)為質數的時候,自然\(\varphi(i) = i - 1\)。
令\(n = mp\),
當\(m \ \ mod \ \ p == 0\)的時候,有\(\varphi(n) = \varphi(m) * p\)。
否則有\(\varphi(n) = \varphi(m) * (p - 1)\)。
證明一下吧:
1.若\(m \ \ mod \ \ p == 0\),令\(m = k * p ^ x\),這樣保證了\(k, p\)互質。
所以
\(\varphi(n) = \varphi(k) * \varphi(p ^ {x + 1})\)
???\(= \varphi(k) * p ^ x * (p - 1)\)
然後看等式右邊:
\(\varphi(m) * p = \varphi(k) * \varphi(p ^ x) * p\)
??????$ = \varphi(k) * p ^ {x - 1} * (p - 1) * p$
??????$ = \varphi(k) * p ^ x * (p - 1)$
(也不知道這算不算證明)
至於\(m \ \ mod \ \ p \neq 0\)時,根據積性,\(\varphi(n) = \varphi(m) * (p - 1)\)。
至於篩莫比烏斯函數,就更簡單了。
如果\(n\)
若\(m \ \ mod \ \ p == 0\),則\(\mu(n) = 0\),
否則\(\mu(n) = - \mu(m)\)。
void init() { phi[1] = mu[1] = 1; for(int i = 2; i <= n; ++i) { if(!v[i]) v[i] = i, prime[++prime[0]] = i, phi[i] = i - 1, mu[i] = -1; for(int j = 1; i * prime[j] <= n && j <= prime[0]; ++j) { int k = i * prime[j]; v[k] = prime[j]; if(i % prime[j] == 0) { phi[k] = prime[j] * phi[i]; mu[k] = 0; break; } else phi[k] = (prime[j] - 1) * phi[i], mu[k] = -mu[i]; } } }
數論函數學習筆記之線性篩