NumberTheory
莫比乌斯反演
莫比乌斯函数 μ(n) 的定义如下:
-
当 n = 1 时,μ(1) = 1。
-
当 n 含有平方因子,μ(n) = 0。
-
μ(n) = -1^k, k 为 n 的本质不同质因子个数
莫比乌斯函数性质
\[\sum_{d|n}^{}μ(n) = \begin{cases}
1 & n=1\\
0 & n \ne1
\end{cases}\]
线性筛
μ函数为积性函数,可以线性筛莫比乌斯函数(线性筛基本可以求所有的积性函数)
void getMu() {
mu[1] = 1;
for (int i = 2; i <= n; ++i) {
if (!flg[i]) p[++tot] = i, mu[i] = -1;
for (int j = 1; j <= tot && i * p[j] <= n; ++j) {
flg[i * p[j]] = 1;
if (i % p[j] == 0) {
mu[i * p[j]] = 0;
break;
}
mu[i * p[j]] = -mu[i];
}
}
}
杜教筛
假设我们要求一个积性函数的前缀和
\[S(n)=\sum_{i=1}^{n}f(i)
\]
,我们可以构造另外两个积性函数函数
h=f∗g,使得h的前缀和便于计算。

浙公网安备 33010602011771号