『Möbius函数与Möbius反演』
<更新提示>
<第一次更新>
<正文>
Möbius函数
定义
设正整数\(n\)算数基本定理分解后为\(n=\prod_{i=1}^{k}p_i^{a_i}\),定义函数
\begin{cases}
0\ \ (\exists\ i\in[1,k],a_i>1)
\\(-1)^k\ \ (\forall\ i\in[1,k],a_i=1)
\end{cases}
\]
称\(\mu(n)\)为\(Möbius\)函数。
即分解质因数后,若\(n\)有多个相同的质因子,则\(\mu(n)=0\)。当\(n\)的的质因子各不相同时,若\(n\)有偶数个质因子,则\(\mu(n)=1\),若\(n\)有奇数个质因子,则\(\mu(n)=-1\)。
求解
对于单个数字的\(Möbius\)函数,可以直接用试除法分解质因数求解,时间复杂度为\(O(\sqrt n)\)。若要求求解\(1-n\)的所有\(Möbius\)函数,则可以配合线性筛求解:
\(1.\) 对于线性筛找到的一个质数,显然\(\mu(n)=-1\)
\(2.\) 对于线性筛用最小质因子\(p_j\)筛掉一个合数时,由\(Möbius\)函数定义的第二部分可得\(\mu(i*p_j)=-\mu(i)\)
\(Code:\)
inline void sieve(void)
{
mui[1] = 1;
for (int i=2;i<=Uplim;i++)
{
if (!vis[i])Prime[++cnt] = i , mui[i] = -1;
for (int j=1;j<=cnt&&i*Prime[j]<=Uplim;j++)
{
vis[ i*Prime[j] ] = true;
if (i%Prime[j]==0)break;
mui[ i*Prime[j] ] = -mui[i];
}
}
}
性质
\(1.\) 对于任意正整数\(n\),若\(n=1\),则\(\sum_{d|n}\mu(d)=1\),若\(n>1\),则\(\sum_{d|n}\mu(d)=0\)。
证明:
当\(n=1\)时,\(\sum_{d|n}\mu(d)=1\)显然成立。
当\(n>1\)时,令\(n=\prod_{i=1}^kp_i^{a_i}\),则\(n\)的因数中\(\mu\)值不为\(0\)的必然是由若干个互不相同的质因子相乘得到的,其中质因子个数为\(r\)的有\(C_k^r\)个,那么显然有\(\sum_{d|n}\mu(d)=\sum_{i=0}^k(-1)^iC_k^i\),此式恰为二项式定理\((a+b)^n=\sum_{i=0}^nC_n^ia^ib^{n-i}\)中代入\(a=-1,b=1,n=k\)的情况,可知\(\sum_{d|n}\mu(d)=(-1+1)^k=0\)。
\(2.\) 对于任意正整数\(n\),有\(\sum_{d|n}\frac{\mu(d)}{d}=\frac{\phi(n)}{n}\)。
证明:
因为\(n=\sum_{d|n}\phi(d)\),令\(F(n)=n,f(n)=\phi(n)\),则由莫比乌斯定理可得\(\phi(n)=\sum_{d|n}\mu(d)F(\frac{n}{d})=\sum_{d|n}\mu(d)*\frac{n}{d}\),所以可得\(\sum_{d|n}\frac{\mu(d)}{d}=\frac{\phi(n)}{n}\)。
\(3.\) \(Möbius\)函数为积性函数,即对于互质正整数\(a,b\),有\(\mu(a*b)=\mu(a)*\mu(b)\)。
证明略。
Möbius反演
Möbius定理
首先,我们需要先了解\(Möbius\)反演的基础,\(Möbius\)定理。
\(Möbius\)定理:
\(1.\) 因数形式:若数论函数\(F,f\)满足\(F(n)=\sum_{d|n}f(d)\),则可以得到\(f(n)=\sum_{d|n}\mu(d)F(\frac{n}{d})\)。
\(2.\) 倍数形式:若数论函数\(F,f\)满足\(F(n)=\sum_{n|d}f(d)\),则可以得到\(f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)\)。
证明:
因数形式
\]
由于\(Möbius\)的性质\(1.\)可得\(\sum_{d|n}\mu(d)=1\)当且仅当\(n=1\),所以对于\(\sum_{d|\frac{n}{d'}}\mu(d)\)非\(0\),当且仅当\(\frac{n}{d'}=1\),即\(n=d'\),所以有
\]
倍数形式
设\(\frac{d}{n}=k\),则可以得到
\\=\sum_{k=1}^{+\infty}\mu(k)F(nk)=\sum_{k=1}^{+\infty}\mu(k)\sum_{nk|t}f(t)
\\=\sum_{n|t}f(t)\sum_{k|\frac{t}{n}}\mu(k)
\]
由于\(Möbius\)的性质\(1.\)可得\(\sum_{d|n}\mu(d)=1\)当且仅当\(n=1\),所以对于\(\sum_{k|\frac{t}{n}}\mu(k)\)非\(0\),当且仅当\(\frac{n}{t}=1\),即\(n=t\),所以有
\]
应用
在某些题目中,若有某个函数\(f\)的值比较难求,但是其自变量倍数或约数的函数值求和\(F\)函数比较好求,可以先求出函数\(F\)的值,再利用\(Möbius\)定理,反演求出原函数的值。
<后记>
『Möbius函数与Möbius反演』的更多相关文章
- 『简单积性函数和dirichlet卷积』
简单积性函数 在学习欧拉函数的时候,相信读者对积性函数的概念已经有了一定的了解.接下来,我们将相信介绍几种简单的积性函数,以备\(dirichlet\)卷积的运用. 定义 数论函数:在数论上,对于定义 ...
- 『Python题库 - 填空题』151道Python笔试填空题
『Python题库 - 填空题』Python笔试填空题 part 1. Python语言概述和Python开发环境配置 part 2. Python语言基本语法元素(变量,基本数据类型, 基础运算) ...
- 『Python题库 - 简答题』 Python中的基本概念 (121道)
## 『Python题库 - 简答题』 Python中的基本概念 1. Python和Java.PHP.C.C#.C++等其他语言的对比? 2. 简述解释型和编译型编程语言? 3. 代码中要修改不可变 ...
- Jmeter之『如果(If)控制器』
判断方法 ${__jexl3("${projectName}"=="${targetDir}",)} ${__groovy("${projectNam ...
- 【luogu3768】简单的数学题 欧拉函数(欧拉反演)+杜教筛
题目描述 给出 $n$ 和 $p$ ,求 $(\sum\limits_{i=1}^n\sum\limits_{j=1}^nij\gcd(i,j))\mod p$ . $n\le 10^{10}$ . ...
- mongodb底层存储和索引原理——本质是文档数据库,无表设计,同时wiredTiger存储引擎支持文档级别的锁,MMAPv1引擎基于mmap,二级索引(二级是文档的存储位置信息『文件id + 文件内offset 』)
MongoDB是面向文档的数据库管理系统DBMS(显然mongodb不是oracle那样的RDBMS,而仅仅是DBMS). 想想一下MySQL中没有任何关系型数据库的表,而由JSON类型的对象组成数据 ...
- 『正睿OI 2019SC Day7』
简单数论 质因子分解 素性测试 素性测试指的是对一个正整数是否为质数的判定,一般来说,素性测试有两种算法: \(1.\) 试除法,直接尝试枚举因子,时间复杂度\(O(\sqrt n)\). \(2.\ ...
- 『Zap Möbius反演』
Zap Description FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a ,y<=b,并且gcd(x,y)=d.作为F ...
- 深入浅出ES6教程『async函数』
大家好,本人名叫苏日俪格,大家叫我 (格格) 就好,在上一章节中我们学到了Symbol & generator的用法,下面我们一起来继续学习async函数: async [ə'zɪŋk]:这个 ...
随机推荐
- Java面试题全集(上-中-下)及Java面试题集(1-50/51-70)
阅读量超百万级的文章,收藏并分享一下.感谢原创作者的总结 对初中级java开发人员有特别大的帮助,不论是技术点面试还是知识点总结上. Java面试题全集(上): https://blog.cs ...
- java之jsp内置对象
1.out对象 <% out.println("金鳞岂是池中物,<br>"); out.println("一遇风云变化龙.<br>" ...
- vue UI库iview源码解析(2)
上篇问题 在上篇<iview源码解析(1)>中的index.js 入口文件的源码中有一段代码有点疑惑: /** * 在浏览器环境下默认加载组件 */ // auto install if ...
- (二)SpringBoot基础篇- 静态资源的访问及Thymeleaf模板引擎的使用
一.描述 在应用系统开发的过程中,不可避免的需要使用静态资源(浏览器看的懂,他可以有变量,例:HTML页面,css样式文件,文本,属性文件,图片等): 并且SpringBoot内置了Thymeleaf ...
- 架构之CDN缓存
CDN缓存 CDN主要解决将数据缓存到离用户最近的位置,一般缓存静态资源文件(页面,脚本,图片,视频,文件等).国内网络异常复杂,跨运营商的网络访问会很慢.为了解决跨运营商或各地用户访问问题,可以在重 ...
- leetcode_1. Two Sum
leetcode_1. Two Sum 前言: 这段时间开始敲leetcode.我认为这并不仅仅只是为了应付笔试,面试.而是确实有着一定的意义. 尤其,你提交代码后,网站会多方面验证你的答案. 另外, ...
- 关于eclipse的一些问题
解决Eclipse,MyEclipse出现An error has occurred,See error log for more details的错误 方法1. 在"开始"--& ...
- PAT1041: Be Unique
1041. Be Unique (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Being uniqu ...
- PyCharm中设置字体大小
1.在file(文件)里面找到setting(设置) 2. 然后再左面Editor里面找Font,再到右面Size里面设置字体大小
- SQL Server 2008更改数据库保存路径
本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=641 操作环境: WindowsXP 数据库: Microsoft SQL Server 2008 操作步骤: 选中 ...