[莫比乌斯反演]莫比乌斯函数

news/2024/11/17 17:43:29/

莫比乌斯函数定义

μ ( n ) = { 1 n = 1 ( − 1 ) k n = p 1 p 2 p 3 … p k 0 p 2 ∣ n \mu(n)=\begin{cases}1&n=1\\(-1)^k&n=p_1p_2p_3…p_k\\0&p^2|n\end{cases} μ(n)= 1(1)k0n=1n=p1p2p3pkp2n

其中所有的 p p p都是关于 n n n的质因数

莫比乌斯函数性质

∑ d ∣ n μ ( d ) = [ n = 1 ] \sum\limits_{d|n}\mu(d)=[n=1] dnμ(d)=[n=1]

其中方括号是艾佛森表示法,类似于条件表达式,当表达式成立时表达式的值为 1 1 1,否则表达式的值为 0 0 0

n = 1 n=1 n=1时,可以直接计算得出 ∑ d ∣ 1 μ ( d ) = μ ( 1 ) = 1 \sum\limits_{d|1}\mu(d)=\mu(1)=1 d∣1μ(d)=μ(1)=1

n ≠ 1 n\neq 1 n=1时,对 n n n进行质因数分解可以得到 n = p 1 a 1 p 2 a 2 p 3 a 3 ⋯ p k a k n=p_1^{a_1}p_2^{a_2}p_3^{a_3}\cdots p_k^{a_k} n=p1a1p2a2p3a3pkak

此时 d d d质因数分解后,若有任何的 a a a大于 1 1 1的情况,那么此时的 μ ( d ) = 0 \mu(d)=0 μ(d)=0,并不会对结果造成任何的影响

我们设 m = p 1 p 2 p 3 ⋯ p k m=p_1p_2p_3\cdots p_k m=p1p2p3pk

可得 ∑ d ∣ m μ ( d ) = ∑ d ∣ n μ ( d ) \sum\limits_{d|m}\mu(d)=\sum\limits_{d|n}\mu(d) dmμ(d)=dnμ(d)

因为现在的 m m m是由不同的质因数乘积而成的

所以 m m m的因数 d d d t ( t ≤ k ) t(t\leq k) t(tk) m m m的不同的质因数乘积而成

那么此时的 μ ( d ) \mu(d) μ(d)值为 ( − 1 ) t (-1)^t (1)t

这样的 t t t值有 C k t C_k^t Ckt

因此 ∑ d ∣ m μ ( d ) = ∑ t = 1 k C k t ( − 1 ) t \sum\limits_{d|m}\mu(d)=\sum\limits_{t=1}^{k}C_k^t(-1)^t dmμ(d)=t=1kCkt(1)t

可以对增加一项关于 1 1 1的乘积 ∑ t = 1 k C k t ( − 1 ) t = ∑ t = 1 k C k t ( − 1 ) t 1 k − t \sum\limits_{t=1}^{k}C_k^t(-1)^t=\sum\limits_{t=1}^{k}C_k^t(-1)^t 1^{k-t} t=1kCkt(1)t=t=1kCkt(1)t1kt

根据二项式定理 ( x + y ) k = ∑ i = 1 k ( k i ) x i y k − i = ( x + y ) k = ∑ i = 1 k C k i x i y k − i (x+y)^k=\sum\limits_{i=1}^{k}\begin{pmatrix}k\\i\end{pmatrix}x^iy^{k-i}=(x+y)^k=\sum\limits_{i=1}^{k}C_k^ix^iy^{k-i} (x+y)k=i=1k(ki)xiyki=(x+y)k=i=1kCkixiyki

式子即为 ∑ t = 1 k C k t ( − 1 ) t 1 k − t = ( ( − 1 ) + 1 ) k = 0 k = 0 \sum\limits_{t=1}^{k}C_k^t(-1)^t 1^{k-t}=((-1)+1)^k=0^k=0 t=1kCkt(1)t1kt=((1)+1)k=0k=0

∑ d ∣ n μ ( d ) = ∑ d ∣ m μ ( d ) = ∑ t = 1 k C k t ( − 1 ) t = ∑ t = 1 k C k t ( − 1 ) t 1 k − t = ( ( − 1 ) + 1 ) k = 0 k = 0 \sum\limits_{d|n}\mu(d)=\sum\limits_{d|m}\mu(d)=\sum\limits_{t=1}^{k}C_k^t(-1)^t=\sum\limits_{t=1}^{k}C_k^t(-1)^t 1^{k-t}=((-1)+1)^k=0^k=0 dnμ(d)=dmμ(d)=t=1kCkt(1)t=t=1kCkt(1)t1kt=((1)+1)k=0k=0

莫比乌斯函数公式

公式一

若有 F ( n ) = ∑ d ∣ n f ( d ) F(n)=\sum\limits_{d|n}f(d) F(n)=dnf(d),表示为 F F F函数是 f f f函数的约数和

那么 f ( n ) = ∑ d ∣ n μ ( d ) F ( n d ) f(n)=\sum\limits_{d|n}\mu(d)F(\frac{n}{d}) f(n)=dnμ(d)F(dn)

F ( n ) = ∑ d ∣ n f ( d ) F(n)=\sum\limits_{d|n}f(d) F(n)=dnf(d)代入到 f ( n ) = ∑ d ∣ n μ ( d ) F ( n d ) f(n)=\sum\limits_{d|n}\mu(d)F(\frac{n}{d}) f(n)=dnμ(d)F(dn)

f ( n ) = ∑ d ∣ n μ ( d ) ∑ p ∣ ( n / d ) f ( p ) f(n)=\sum\limits_{d|n}\mu(d)\sum\limits_{p|(n/d)}f(p) f(n)=dnμ(d)p(n/d)f(p)

改变式子的枚举顺序,那么 ∑ d ∣ n μ ( d ) ∑ p ∣ ( n / d ) f ( p ) = ∑ p ∣ n f ( p ) ∑ d ∣ ( n / p ) μ ( d ) \sum\limits_{d|n}\mu(d)\sum\limits_{p|(n/d)}f(p)=\sum\limits_{p|n}f(p)\sum\limits_{d|(n/p)}\mu(d) dnμ(d)p(n/d)f(p)=pnf(p)d(n/p)μ(d)

根据莫比乌斯函数的性质,当 n / p = 1 n/p=1 n/p=1 ∑ d ∣ ( n / p ) μ ( d ) \sum\limits_{d|(n/p)}\mu(d) d(n/p)μ(d) 1 1 1,其余情况为 0 0 0

此时的 p p p n n n, f ( n ) ∗ 1 = f ( n ) f(n)*1=f(n) f(n)1=f(n)

所以 ∑ p ∣ n f ( p ) ∑ d ∣ ( n / p ) μ ( d ) = f ( n ) \sum\limits_{p|n}f(p)\sum\limits_{d|(n/p)}\mu(d)=f(n) pnf(p)d(n/p)μ(d)=f(n)

f ( n ) = ∑ d ∣ n μ ( d ) F ( n d ) = ∑ d ∣ n μ ( d ) ∑ p ∣ ( n / d ) f ( p ) = ∑ p ∣ n f ( p ) ∑ d ∣ ( n / p ) μ ( d ) = f ( n ) f(n)=\sum\limits_{d|n}\mu(d)F(\frac{n}{d})=\sum\limits_{d|n}\mu(d)\sum\limits_{p|(n/d)}f(p)=\sum\limits_{p|n}f(p)\sum\limits_{d|(n/p)}\mu(d)=f(n) f(n)=dnμ(d)F(dn)=dnμ(d)p(n/d)f(p)=pnf(p)d(n/p)μ(d)=f(n)

公式二

若有 F ( n ) = ∑ n ∣ d f ( d ) F(n)=\sum\limits_{n|d}f(d) F(n)=ndf(d),表示为 F F F函数是 f f f函数的倍数和

那么 f ( n ) = ∑ n ∣ d μ ( d ) F ( d n ) = ∑ n ∣ d μ ( d n ) F ( d ) f(n)=\sum\limits_{n|d}\mu(d)F(\frac{d}{n})=\sum\limits_{n|d}\mu(\frac{d}{n})F(d) f(n)=ndμ(d)F(nd)=ndμ(nd)F(d)

F ( n ) = ∑ n ∣ d f ( d ) F(n)=\sum\limits_{n|d}f(d) F(n)=ndf(d)代入到 f ( n ) = ∑ n ∣ d μ ( d n ) F ( d ) f(n)=\sum\limits_{n|d}\mu(\frac{d}{n})F(d) f(n)=ndμ(nd)F(d)

f ( n ) = ∑ n ∣ d μ ( d n ) ∑ d ∣ p f ( p ) f(n)=\sum\limits_{n|d}\mu(\frac{d}{n})\sum\limits_{d|p}f(p) f(n)=ndμ(nd)dpf(p)

改变式子的枚举顺序,那么 ∑ n ∣ d μ ( d n ) ∑ d ∣ p f ( p ) = ∑ n ∣ p f ( p ) ∑ d ∣ ( p / n ) μ ( d ) \sum\limits_{n|d}\mu(\frac{d}{n})\sum\limits_{d|p}f(p)=\sum\limits_{n|p}f(p)\sum\limits_{d|(p/n)}\mu(d) ndμ(nd)dpf(p)=npf(p)d(p/n)μ(d)

根据莫比乌斯函数的性质,当 p / n = 1 p/n=1 p/n=1 ∑ d ∣ ( p / n ) μ ( d ) \sum\limits_{d|(p/n)}\mu(d) d(p/n)μ(d) 1 1 1,其余情况为 0 0 0

所以 ∑ n ∣ p f ( p ) ∑ d ∣ ( p / n ) μ ( d ) = f ( n ) \sum\limits_{n|p}f(p)\sum\limits_{d|(p/n)}\mu(d)=f(n) npf(p)d(p/n)μ(d)=f(n)

f ( n ) = ∑ n ∣ d μ ( d ) F ( d n ) = ∑ n ∣ d μ ( d n ) F ( d ) = ∑ n ∣ d μ ( d n ) ∑ d ∣ p f ( p ) = ∑ n ∣ p f ( p ) ∑ d ∣ ( p / n ) μ ( d ) = f ( n ) f(n)=\sum\limits_{n|d}\mu(d)F(\frac{d}{n})=\sum\limits_{n|d}\mu(\frac{d}{n})F(d)=\sum\limits_{n|d}\mu(\frac{d}{n})\sum\limits_{d|p}f(p)=\sum\limits_{n|p}f(p)\sum\limits_{d|(p/n)}\mu(d)=f(n) f(n)=ndμ(d)F(nd)=ndμ(nd)F(d)=ndμ(nd)dpf(p)=npf(p)d(p/n)μ(d)=f(n)

莫比乌斯函数求法

埃氏筛

埃氏筛的时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn), 1 e 7 1e7 1e7以内的数据可以解决

以下是求 1 1 1 n n n的莫比乌斯函数和莫比乌斯函数前缀和的埃氏筛的写法

    Pr[1]=1;for(int i=1;i<=t;i++)Mu[i]=1;for(int i=2;i<=t;i++){if(Prz[i]==0){P++;Pr[P]=i;for(int j=i;j<=t;j+=i){Prz[j]=1;if(j%(i*i)==0){Mu[j]=0;}Mu[j]=-Mu[j];}}}PreMu[0]=0;for(int i=1;i<=t;i++)PreMu[i]=PreMu[i-1]+Mu[i];
欧拉筛

因为莫比乌斯函数是一个积性函数,所以可以通过欧拉筛来求

欧拉筛的时间复杂度比较优秀, 1 e 7 1e7 1e7以内的数据可以快速解决

以下是求 1 1 1 n n n的莫比乌斯函数和莫比乌斯函数前缀和的欧拉筛的写法

    Prz[1]=1;Mu[1]=1;for(int i=2;i<=t;i++){if(Prz[i]==0){P++;Pr[P]=i;Mu[i]=-1;}for(int j=1,k;i*Pr[j]<=t&&j<=P;j++){k=i*Pr[j];Prz[k]=1;if(i%Pr[j]==0){Mu[k]=0;break;}Mu[k]=Mu[i]*Mu[Pr[j]];}}PreMu[0]=0;for(int i=1;i<=t;i++)PreMu[i]=PreMu[i-1]+Mu[i];
杜教筛

利用杜教筛可以处理较大的积性函数前缀和的值

例如莫比乌斯函数和欧拉函数

#include<bits/stdc++.h>
using namespace std;
long long T,n,N,M=8000000,Fz[8000005],Mz[8000005];
map<long long,long long>Fd,Md;
int P=0,Fk[8000005],Mk[8000005],Pr[8000005],Pv[8000005];
void YCL(){Fk[1]=1;Mk[1]=1;for(int i=2;i<=M;i++){if(Pv[i]==0){P++;Pr[P]=i;Fk[i]=i-1;Mk[i]=-1;}for(int j=1,k;j<=P&&i*Pr[j]<=M;j++){k=i*Pr[j];Pv[k]=1;if(i%Pr[j]==0){Fk[k]=Fk[i]*Pr[j];Mk[k]=0;break;}Fk[k]=Fk[i]*Fk[Pr[j]];Mk[k]=Mk[i]*Mk[Pr[j]];}}for(int i=1;i<=M;i++)Fz[i]=Fz[i-1]+Fk[i],Mz[i]=Mz[i-1]+Mk[i];return;
}
long long DjsF(long long t){if(t<=M)return Fz[t];else if(Fd.count(t))return Fd[t];else{long long s=0;for(long long i,j=2;j<=t;j=i+1){i=t/(t/j);s+=DjsF(t/i)*(i-j+1);}return Fd[t]=t*(t+1)/2-s;}return 0;
}
long long DjsM(long long t){if(t<=M)return Mz[t];else if(Md.count(t))return Md[t];else{long long s=0;for(long long i,j=2;j<=t;j=i+1){i=t/(t/j);s+=DjsM(t/i)*(i-j+1);}return Md[t]=1-s;}return 0;
}
int main(){YCL();scanf("%lld",&T);while(T--){scanf("%lld",&n);printf("%lld %lld\n",DjsF(n),DjsM(n));}
}

http://www.ppmy.cn/news/850501.html

相关文章

数学建模美赛O奖论文研读启示录——从模仿开始

美赛O奖论文研读启示录 &#x1f48e;前言&#x1f3af;标题&#x1f4d5;摘要&#x1f4e3;问题背景/问题重述&#x1f4d6;文献综述&#xff08;Literature Review&#xff09;&#x1f4aa;Our Work&#x1f4ac;假设&#x1f527;模型建立/算法介绍&#x1f527;模型求解&a…

html5编程色卡颜色,手把手教你制作手写色卡书签

这样的书签有没有很酷&#xff1f; 一、材料&#xff1a; 熟宣纸(比书签白卡略大)、书签白卡、彩墨、钢笔(或玻璃笔)、喷壶、剪刀、固体胶、流苏等。 二、制作过程&#xff1a; 1、将白色熟宣纸染色&#xff1a; 白色熟宣纸被染色后&#xff0c;晾干 彩墨分装 (1)可以滴一滴彩墨…

印资企业初印象

印资企业初印象 笔者下个SAP项目已经落地了。乙方咨询公司是一家头部印资跨国企业&#xff0c;笔者作为SAP freelancer被派去该公司的某个项目上。根据乙方的要求&#xff0c;笔者就如同要入职他们公司一样提供诸多资料&#xff0c;比如学历证书&#xff0c;ID&#xff0c;户口…

墨卡托(Mercator)投影

墨卡托(Mercator)投影 Google Maps、Virtual Earth等网络地理所使用的地图投影&#xff0c;常被称作Web Mercator或Spherical Mercator&#xff0c;它与常规墨卡托投影的主要区别就是把地球模拟为球体而非椭球体。 1 什么是墨卡托投影&#xff1f; 墨卡托(Mercator)投影&#x…

数学/数论专题:莫比乌斯函数与欧拉函数

数学/数论专题&#xff1a;莫比乌斯函数与欧拉函数&#xff08;进阶&#xff09; 0. 前言1. 前置知识2. 正文3. 总结4. 参考资料 0. 前言 本篇文章会从狄利克雷卷积的角度&#xff0c;讨论莫比乌斯函数与欧拉函数的相关性质。 或者说就是利用狄利克雷卷积重新证一遍这两个函数…

墨卡托投影与瓦片地图

目录 一、开胃小知识 二、墨卡托投影 1、什么是墨卡托投影&#xff1f; 2、墨卡托投影的特点 3、墨卡托投影的缺点 三、瓦片地图 1、GIS介绍 2、瓦片地图原理 四、瓦片地图原理---续 1、经纬度 2、投影 3、瓦片 4、瓦片编号 5、关于中国的经纬度 一、开胃小知识 …

超详细的学习笔记:CSS浮动(附代码示例)

笔记参考b站网课&#xff1a;【前端开发入门教程&#xff0c;web前端零基础html5 css3前端项目视频教程】https://www.bilibili.com/video/BV1Kg411T7t9?p124&vd_source06e5549bf018e111f4275c259292d0da 目录 一、结构伪类选择器 二、伪元素 三、标准流 四、浮动 1、…