今天我们开始莫比乌斯反演的学习.这篇博文特别多的公式,强迫症患者请勿观看
莫比乌斯反演
莫比乌斯函数:
定义莫比乌斯函数,当
时,
.
当是square-free number时,设
的质因数分解有
项,则
;
否则,;
根据上面,我们不难验证也是积性函数
定理
,即
和
互为彼此的逆
证明
设n的不同质因子有k个,分别为,那么有
莫比乌斯反演
定义
莫比乌斯变换:设数论函数,称
为莫比乌斯变换.
莫比乌斯反演:设数论函数,称
为莫比乌斯反演.
例如:
,即
;
,即
;
练习
接下来,我们根据上篇博文的知识和莫比乌斯反演来做几道题:
给出,求
我们之前学欧拉函数的时候,能求,但是当
的时候,就不能再用欧拉函数求了.
还是之前的套路:
不妨设,继续推:
此时用整数分块已经可以做到的复杂度,足以解决此题.
for(int k=1;k<=min(n,m);k++){
int a=n/k,b=m/k;
long long sum=0;
for(int l=1,r;l<=min(a,b);l=r+1){
r=min(a/(a/l),b/(b/l));
sum+=1ll*(smu[r]-smu[l-1])*(a/l)*(b/l);
}
ans+=sum*k;
}
由答案的对称性,不妨设,然后我们继续推:
由于,所以
,那么最终答案就是
,这个式子在线性筛出
及其前缀和的情况下,可以用整数分块做到
一次回答(用于应对多组询问的情况).这样我们就可以得到一种
的算法.
接下来,我们在做一个例题:
给出n,m求
与前面的例题类似的推法,最后得到:
设,看上去不是很好线性筛,不过可以用厄拉多塞筛法在O(n log log n)内算出前缀和,然后用整数分块回答询问.
好了,今天的内容到这里就结束了,感谢大家的收看(估计那么多公式也看不懂…)