欧拉函数线性求解以及莫比乌斯反演(Mobius)
前言
咕咕了好久终于来学习莫反了
要不是不让在机房谁会发现数学一本通上有这么神奇的东西
就是没有性质的证明
然后花了两节数学课证明了一遍
舒服~
前置知识:欧拉函数,二项式定理(组合数)
会欧拉函数的可以直接看\(Mobius\)了
欧拉函数
含义
\(\phi (n)\) 表示比\(n\)小的数中与\(n\)互质的数的个数
引理1
- \(n\)为质数,\(\phi(n) = n - 1\)
- \(n=a*b\) 且 \((a, b) = 1\),则\(\phi(n) = \phi(a) * \phi(b)\)
- 对于一个质数\(n\)的\(a\)次方 \(\phi(n^a) = (n - 1) * p^{n-1}\)
现对于第三条性质给出证明 - 比\(n^a\)小的数有\(n^a - 1\)个
- 其中能整除的表示为\(n* t (t = 1, 2, ... n ^{a-1}-1)\)
- 总计有\(n^{a-1}-1\)个数能被整除
- 则与其互质的数的个数为\(\phi(p^a) = (n^a-1) - (p^{a-1}+1) = p^a - p^{a-1} = (p-1) * p^{a-1}\)
引理2
对于质数\(n\),唯一分解定理 \(n = {p_1}^{c_1} * {p_2} ^{c_2}...{p_k}^{c_k}\)
$ \phi(n) = n * (1- \frac 1 {p_1}) * (1- \frac 1 {p_2}) ... (1- \frac 1 {p_k})\(**
**若\)a\(与\)m\(互质,\)a^{\phi(m)} \equiv 1 (mod ; m)$
线性筛
根据上述性质,推出
- 若\(p\)为质数,\(\phi (p) = p - 1\)
- \(if(i \% p == 0) \:\ \phi(i*p)=p*\phi(i)\)
- \(if(i \% p \; != 0) \:\ \phi(i*p)=\phi(i)*(p -1)\)
code
inline void pre(int n){
phi[1] = 1;
for(int i = 2; i <= n; i++){
if(!vis[i]){
prime[++cnt] = i;
phi[i] = i - 1;
}
for(int j = 1; j <= cnt && i * prime[j] <= n; j++){
vis[i * prime[j]] = 1;
if(i % prime[j] == 0){
phi[i * prime[j]] = phi[i] * prime[j];
break;
}
else phi[i * prime[j]] = phi[i] * (prime[j] - 1);
}
}
}
莫比乌斯反演(Mobius)
定义
对于非负整数集合上的两个函数\(F(n)\)和\(f(n)\),若满足条件\(F(n)=\sum_{d|n}f(d)\)则
$$f(n)=\sum_{d|n}\mu(d)F(\frac n d)$$
\(\mu\)函数
定义如下
- 若\(d=1\)则\(\mu(d)=1\)
- 若\(d=p_1p_2p_3...p_k\)均为互异质数,则\(\mu(d)=(-1)^k\)
- 其他情况\(\mu(d)=0\)
性质一
\begin{cases}
1, & \text n=1 \\
0, & \text n>1
\end{cases}
\]
证明:
若\(n\)为质数,显然\(sum=0\)
若\(n\)为合数,根据唯一分解定理
\]
\(n\)的因子\(d\)只能是\(p_1p_2,p_1p_3,p_3p_k\)诸如此类
可以发现\(d\)的构造来自于\(k\)个质因子中选取了\(i\)个
- \(k\)为奇数即\(n\)中包含奇数个质因子
从\(k\)中选出奇数个因子,\(\mu\)值为-1,对答案贡献为\(-\sum_{i=1}^kC_k^i(i+=2)\)
从\(k\)中选出偶数个因子,\(\mu\)值为1,对答案共享为\(\sum_{i=2}^{k-1}C_k^i(i+=2)\)
两种情况加和化简得\(-C_k^k=-1\)
\(sum = -1 + \mu(1)=-1+1=0\)
得证 - k为偶数即\(n\)中包含偶数个质因子
同理可得\(sum=0\)
性质二
\]
证明:
同上将\(n\)质因数分解,同时将等号右侧
\]
\]
同样的,对\(k\)的奇偶性分类讨论
- \(k\)为奇数
- 从分子中选取奇数个质因子组成类似于\(p_1p_2p_3\)
由于剩下了奇数-奇数=偶数个括号,那么在多项式展开式中该项的常数项(不包含其他质因子)系数一定为\(1\)
与分母约分得到\(\frac {1}{\text {偶数个质因子的积}}\)
根据\(\mu\)函数的性质可以知道,该化简式等于\(\frac {\mu(\text 分母)} {\text 分母}\) - 同理,从中选取偶数个质因子得到的化简结果为
\(\frac {1}{\text {奇数个质因子的积}}\)
该化简式也等于\(\frac {\mu(\text 分母)} {\text 分母}\) - 当然,分子展开式当中必包含一项\(p_1p_2...p_k=\text 分母\)
约分结果显然为\(1=\mu(1)/1\)
- 从分子中选取奇数个质因子组成类似于\(p_1p_2p_3\)
综上所述$$\frac {\phi(n)}{n}= (1- \frac 1 {p_1}) * (1- \frac 1 {p_2}) ... (1- \frac 1 {p_k})$$
\]
\]
\]
\]
原命题得证
- \(k\)为偶数
同理即可证明
\]
原命题得证
反演证明
目标性质$$f(n)=\sum_{d|n}\mu(d)F(\frac n d)$$
证明:
由\(F(n)\)与\(f(n)\)的关系\(F(n)=\sum_{d|n}f(d)\)将等式推导:
\]
\]
可见只有满足\((d*d')|n\)时,函数对答案有贡献
那么不妨交换\(d\)和\(d'\)的位置(理解成范围也行)
\]
\]
再观察式子,根据\(\mu(d)\)非\(1\)即\(0\)的性质,来考虑\(d'\)为何值时对答案有贡献
可见当且仅当\(d'=n\)且\(d=\frac {n}{d'}=1\)时,\(\mu(d)=1\)该式不为\(0\)
否则式子值为\(0\)对答案无贡献
\]
\]
综上所述
\]
原命题得证!
小结
关于\(Mobius\)的性质纸上推导了两天,建议多手模
思维量不小~
欧拉函数线性求解以及莫比乌斯反演(Mobius)的更多相关文章
- HDU 1695 GCD 欧拉函数+容斥定理 || 莫比乌斯反演
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 【bzoj2401】陶陶的难题I “高精度”+欧拉函数+线性筛
题目描述 求 输入 第一行包含一个正整数T,表示有T组测试数据.接下来T<=10^5行,每行给出一个正整数N,N<=10^6. 输出 包含T行,依次给出对应的答案. 样例输入 7 1 10 ...
- Bzoj 2818: Gcd 莫比乌斯,分块,欧拉函数,线性筛
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 3241 Solved: 1437[Submit][Status][Discuss ...
- 欧拉函数(小于或等于n的数中与n互质的数的数目)&& 欧拉函数线性筛法
[欧拉函数] 在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler’s totient function.φ函数.欧拉商数等. 例如φ( ...
- hdu 6390 欧拉函数+容斥(莫比乌斯函数) GuGuFishtion
http://acm.hdu.edu.cn/showproblem.php?pid=6390 题意:求一个式子 题解:看题解,写代码 第一行就看不出来,后面的sigma公式也不会化简.mobius也不 ...
- 【bzoj2190】【仪仗队】欧拉函数+线性筛(浅尝ACM-J)
向大(hei)佬(e)势力学(di)习(tou) Description 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪 ...
- 欧拉筛 线性筛 素数+莫比乌斯的mu[]
https://blog.csdn.net/qq_39763472/article/details/82428602 模板来自https://blog.csdn.net/Avalon_cc/artic ...
- BZOJ4804 欧拉心算(莫比乌斯反演+欧拉函数+线性筛)
一通套路后得Σφ(d)μ(D/d)⌊n/D⌋2.显然整除分块,问题在于怎么快速计算φ和μ的狄利克雷卷积.积性函数的卷积还是积性函数,那么线性筛即可.因为μ(pc)=0 (c>=2),所以f(pc ...
- 【BZOJ2401】陶陶的难题I 欧拉函数+线性筛
[BZOJ2401]陶陶的难题I 题意:求,n<=1000000,T<=100000 题解:直接做是n*sqrt(n)的,显然会TLE,不过这题a和b都是循环到n,那么就可以进行如下的神奇 ...
随机推荐
- MPI中的cannon算法
Cannon算法 算法过程 假设矩阵\(A,B\)和\(C\)都可以分成\(m\times m\)块矩阵,即\(A = (A_{(ij)})_{m\times m},B = (B_{(ij)})_{m ...
- 哇,ElasticSearch多字段权重排序居然可以这么玩
背景 读者提问:ES 的权重排序有没有示列,参考参考? 刚好之前也稍微接触过,于是写了这篇文章,可以简单参考下. 在很多复杂的业务场景下,排序的规则会比较复杂,单一的降序,升序无法满足日常需求.不过 ...
- 焦大:seo思维光年(上)检索的价值观
http://www.wocaoseo.com/thread-55-1-1.html 检索的价值观是什么?最近很多人咨询我这个问题,因为在百度上根本找不到相关的资料,其实这个东西也是我自己总结的,比如 ...
- Apache Tika实战
Apache Tika实战 Tika 简介 Apache Tika 是一个内容分析工具包,可以检测上千种文件类型,并提取它们的元数据和文本.tika在设计上十分精巧,单一的接口使它易于使用,在搜索引擎 ...
- 23种设计模式 - 数据结构(Composite - iterator - Chain of Responsibility)
其他设计模式 23种设计模式(C++) 每一种都有对应理解的相关代码示例 → Git原码 ⌨ 数据结构 Composite 动机(Motivation) 软件在某些情况下,客户代码过多依赖于对象容器复 ...
- 总结回顾js arr的常见方法以及相关的使用场景(一)
Array对象方法 1.arr.concat() 连接两个或更多的数组,并返回结果. 连接数组中的值 连接两个数组 连接三个数组 2.arr.join() 把数组的所有元素放入一个字符串.元素通过指定 ...
- 在Mac上打开多个Unity实例
alias koa_unity="open -n /Applications/Unity\ 5.2.2/Unity.app" alias rob_unity="open ...
- 【HttpRunner v3.x】笔记 ——1. 环境安装
一.环境说明 HttpRunner 是一个基于 Python 开发的测试框架,可以运行在 macOS.Linux.Windows 系统平台上.笔者使用的是windows系统,所以后续都是基于windo ...
- docker部署code-server实现在线开发
1.前言 本文记录了通过docker.docker-compose部署code-server.mysql,搭建在线开发环境的过程,综合体验很爽,适合小规模开发团队使用. 安装环境: vmware hy ...
- Java中的String字符串及其常用方法
字符串(String) 文章目录 字符串(String) 直接定义字符串 常用方法 字符串长度 toLowerCase() & toUpperCase()方法 trim()方法去除空格 判空 ...