莫比乌斯函数入门
这个答辩似乎看不懂……不如换个形式去描述一下。
\(\mu(1)=1\) 是初值,没啥好介绍的。
把 \(n\) 写为 \(\prod_{i=1}^k{p_i}^{c_i}\),如果 \(\max_{c_k}>1\) 那么 \(\mu(n)=0\)。
否则 \(\mu(n)=(-1)^k\)。
感觉讲得很清楚了 QwQ
由于莫比乌斯也是高贵的积性函数,和 \(\varphi(n)\),\(f(n)=\gcd(k,n)\),\(\operatorname{d}(n)\),\(\sigma(n)\) 这类都可以线性筛预处理:
mu[1]=1;
for(int i=2;i<N;i++){
if(!pr[i])pt+=i,mu[i]=-1;
for(int j:pt){
if(i*j>=N)break;
pr[i*j]=true;
if(i%j==0)break(mu[i*j]=0)
mu[i*j]=-mu[i];
}
}
看着这个莫比乌斯就很想容斥的样子,那就给个例题?
虽然可以线性筛直接筛出来去计算,但还是太慢了,需要 \(\mathcal O(n)\) 的复杂度。
发现只需要去计算不为 \(0\) 的数量就可以了,其他 \(\pm1\) 的平方都是 \(1\)。
那么就可以转化为 \([1,n]\) 不包含平方因子的数量,也就是算 \([1,n]\) 包含平方因子的数量。包含 \(2^2\) 的数量就是 \(\lfloor\frac n{2^2}\rfloor\);包含 \(3^2\) 的数量就是 \(\lfloor\frac n{3^2}\rfloor\);包含 \(4^2\) 的数量就是 \(\lfloor\frac n{4^2}\rfloor\),但是这个已经在 \(2^2\) 里算过了,没有贡献;包含 \(5^2\) 的数量就是 \(\lfloor\frac n{5^2}\rfloor\);包含 \(6^2\) 的数量就是 \(\lfloor\frac n{6^2}\rfloor\),可是在 \(2^2\) 和 \(3^2\) 中算过了,反而要减去……;包含 \(30^2\) 的数量就是 \(\lfloor\frac n{30^2}\rfloor\) 可是容斥一下反而是要加上的。发现其实这加减的系数就是莫比乌斯函数 \(\mu\)。
这样线性筛预处理就能做到 \(\mathcal O(\sqrt n)\),据说可以变成 \(\mathcal O(\sqrt[3]n)\)。
证明。把 \(n\) 写为 \(\prod_{i=1}^k{p_i}^{c_i}\),那就是这些质因子自由组合弄出的倍数也就是 \(\prod_{i=1}^k{p_i}^{c'_i},c'_i\in[0,c_i]\)。
如果 \(\exists c'_i>1\),那么这个数的莫比乌斯函数必然为 \(0\) 无需考虑。那么也就是考虑每个 \(p_i\) 选 \(0\) 个还是选 \(1\) 个了。选择 \(1\) 个的总数就是 \(C_k^1\),每个的贡献是 \(-1\),选择 \(2\) 个的总数就是 \(C_k^2\),每个的贡献是 \(1\)……,选择 \(k\) 个的总数就是 \(C_k^k\),每个的贡献是 \((-1)^k\)。
这个东西可以使用二项式定理去证明。
不过当 \(n=1\) 时是例外,此时 \(\sum_{d\mid1}\mu(d)=1\)。
很多时候会和 \(\gcd\) 纠缠在一起呢。
通过二维前缀和的拆分就变成
发现必须 \(k\mid i\) 并且 \(k\mid i\) 所以只需要枚举 \(k\) 的倍数
根据莫比乌斯函数的性质可以变形
这个 \(d\) 必须满足 \(d\mid\gcd(i,j)\) 也就是 \(d\mid i\) 并且 \(d\mid j\)。要求 \(d\le\min(n,m)\) 所以直接计算对于所有 \(d\in[1,\min(n,m)]\)
运用整除知识知道 \(\sum_{i=1}^n[d\mid i]\) 就是 \(\lfloor\frac nd\rfloor\)
运用莫比乌斯函数前缀和与整除分块就可以 \(\mathcal O(\sqrt n)\) 的复杂度。
如果还是刚刚那个做法就需要 \(\mathcal O(\frac{n\sqrt n}{\ln n})\),不妨记 \(k=pd\)
对于相同的 \(k\) 后半段是始终一样的,那就去提取后半段
那么枚举每个 \(p\) 的倍数就可以算出后面那个东西。同样配合整除分块就可以 \(\mathcal O(\sqrt n)\) 解决。
莫比乌斯反演就是如果一个数论函数 \(f\) 可以拆成另一个数论函数 \(g\),即
那么就可以
一般来说第一个用到的多点。