莫比烏斯反演(數論學習)
阿新 • • 發佈:2021-07-18
莫比烏斯函式
定義
\(\mu(n)= \begin{cases} 1&n=1\\0&n\text{ 含有平方因子}\\ (-1)^k&k\text{ 為 }n\text{ 的不同單個質因子的個數}\\\end{cases}\)
性質
- \(d|n表示d是n的因子\)
\(\sum_{d\mid n}\mu(d)= \begin{cases} 1&n=1\\ 0&n\neq 1\\ \end{cases}\)
\(=>\sum_{d\mid n}\mu(d)=[n=1]=\varepsilon(n)\)
\(=>\mu * 1 =\varepsilon\)
- 反演結論
\(\displaystyle [\gcd(i,j)=1]=\sum_{d\mid\gcd(i,j)}\mu(d)\)
實現
線性篩實現
void getMu() { mu[1] = 1; for (int i = 2; i <= n; ++i) { if (!flag[i]) prime[++tot] = i, mu[i] = -1; for (int j = 1; j <= tot && i * prime[j] <= n; ++j) { flag[i * prime[j]] = 1; if (i % prime[j] == 0) { mu[i * prime[j]] = 0; break; } mu[i * prime[j]] = -mu[i]; } } }
莫比烏斯反演
公式
\(設數論函式f(n),g(n)\)
\(f(n)=\sum_{d\mid n}g(d)=>g(n)=\sum_{d\mid n}\mu(d)f(\frac{n}{d})\)
\(f(n)=\sum_{n|d}g(d)=>g(n)=\sum_{n|d}\mu(\frac{d}{n})f(d)\)