懵逼乌斯反演果然名不虚传,自闭了两天的我打算学习一下这一块比较实用的数论内容。

(注:1.为了区分狄尼克雷卷积与乘法,本篇文章中乘号全部省略,卷积全部用" * "表示。2.用gcd(a,b)表示a和b的最大公约数。3.用lcm(a,b)表示a和b的最小公倍数。4.用C(n,m)表示在n个数中选择m个数的方案数。5." ^ "在本篇文章中表示乘方而不是异或。)

知识点:

一、数论函数:

  定义:定义域为正整数,(陪域为复数)的函数。

二、积性函数

  1.定义:满足f(ab)=f(a)f(b)(gcd(a,b)=1)的数论函数。

  *完全积性函数定义:满足f(ab)=f(a)f(b)的数论函数。

  2.常见积性函数:(1)欧拉函数φ(n)(2)莫比乌斯函数μ(n)(3)除数函数dk(n)表示n的所有正因子k次幂和

  3.积性函数性质:

  (1)设n=∏pici ,则f(n)=∏f(pici),由定义显然。因此大多数积性函数可以线性筛预处理。

  (2)若f(n),g(n)均为积性函数,h(n)=f(n)g(n),h(n)=f(n)/g(n)也为积性函数。

   证明:h(a)h(b)=f(a)g(a)f(b)g(b)=f(a)f(b)g(a)g(b)=f(ab)g(ab)=h(ab),满足定义,得证。

  (3)欧拉函数φ(n)的性质:(φ*1)(n)=n。

   证明:

    (φ*1)(n)=∑d|n φ(d)1(n/d)=∑d|n φ(d),

    分解质因数得n=∏(i:1~k)pici 

    由于欧拉函数为积性函数,∑d|n φ(d)=∏(i:1~k)(∑(j:0~ci)φ(pij)),(将式子拆开显然)

    由φ(1)=1得   ∑d|n φ(d)=∏(i:1~k)(∑(j:1~ci)φ(pij)+1) 

    由φ(pe)=(p-1)pe-1 =p-pe-1 ,可得∑d|n φ(d)=∏(i:1~k)(∑(j:1~ci)(pi- pij-1)+1)

    将∑内的式子拆开得,∑d|n φ(d)=∏pici =n。 

三、狄尼克雷卷积

  1.定义:两个数论函数的狄尼克雷卷积 (f*g)(n)=∑d|n f(d)g(n/d)。

  2.性质:

  (1)满足交换律。

   感性证明:每一个数的因子都是两两对应的,所以无论是什么顺序,都会将所有的f(d)和g(n/d)的乘积都加一遍。

  (2)满足结合律。

   证明如图:

   

  (3)满足分配律。

   证明:设k(n)=g(n)+h(n),f*(g+h)(n)=(f*k)(n)=∑d|n f(n)k(n/d)=∑d|n f(n)(g(n/d)+h(n/d))=∑d|n f(n)g(n/d)+∑d|n f(n)h(n/d)=(f*g)(n)+(f*h)(n),得证。

  (4)积性函数的卷积还是积性函数。

   证明如图:

    

  3.单位元:e(n),e(1)=1,e(n)=0(n!=1)。(单位元:若对于任意的数论函数f(n),都有(f*e)(n)=f(n),则e(n)称为单位元。)

   证明:(f*e)(n)=∑d|n f(d)e(n/d),当且仅当d==n时,e(n/d=1)=1,因此只会在d==n时对答案有贡献,贡献为f(n),因此(f*e)(n)=f(n),得证。

四、莫比乌斯函数

  (1)定义:μ(1)=1;当n含平方因子时,μ(n)=0;否则μ(n)=(-1)^k,k为n的本质不同的质因子个数。

  (2)定义狄尼克雷卷积的单位元为e(n),e(n)=∑d|n μ(d)。

   e(n)=∑d|n μ(d),

   将n分解质因数得:n=∏(i:1~k)pici ,令n'=∏(i:1~k)p,由μ的定义可知,μ(n)的大小只与n本质不同的质因子有关,得:

   e(n)=∑d|n' μ(d),

   枚举d为i个质因子的乘积,在k个质因子中选择i的方案数为C(k,i),得:

   e(n) = ∑(i:0~k) C(k,i)μ(i)

     = ∑(i:0~k) C(k,i)(-1)^i

     = ∑(i:0~k) C(k,i)(-1)^i 1^(k-i)

   根据二项式定理,原式=((-1)+1)^k,当k==0即n==1时e(n)=1,否则e(n)=0。

五、莫比乌斯反演

  设f(n),g(n)为两个数论函数,

  如果有f(n)=(g*1)(n),

  那么有g(n)=(f*μ)(n)。

  证明:

   将一式带入二式得,g(n)=(f*μ)(n)=(g*1*μ)(n),

   根据卷积的结合律得,g(n)=(g*(μ*1))(n),

   (μ*1)(n)=∑d|n μ(d)=e(n),

   带入上式得,g(n)=(g*e)(n)=g(n),成立。

六、线性筛

  前文已经提到,绝大多数积性函数可以用线性筛筛出来,下面附上线性筛筛素数,欧拉函数,莫比乌斯函数的代码:

int n,prime[N],num=0,phi[N],miu[N];
bool notprime[N];
void get()
{
notprime[1]=1;
phi[1]=1;
miu[1]=1;
for(int i=2;i<=n;i++)
{
if(!notprime[i]){
prime[++num]=i;
phi[i]=i-1;
               //φ(p)=p-1
miu[i]=-1;
               //质数本质不同的质因子只有自己,因此μ(p)=(-1)^1=-1
}
for(int j=1;j<=num;j++)
{
if(i*prime[j]>n)break;
notprime[i*prime[j]]=1;
               //每个素数只会被自己的最小质因子筛一次
if(i%prime[j]==0){
phi[i*prime[j]]=phi[i]*prime[j];
                    
miu[i*prime[j]]=0;
                    //i*prime[j]含有平方因子prime[j]^2,因此μ(i*prime[j])=0
break;//确保每个数只会被最小质因子筛一次
}
else {
phi[i*prime[j]]=phi[i]*phi[prime[j]];
miu[i*prime[j]]=miu[i]*miu[prime[j]];
                    //μ(n),φ(n)均满足积性函数性质
}
}
}
}

七、杜教筛

  1.作用:O(n^(2/3))地求数论函数的前缀和。

  2.推导:

   设f(n)为一数论函数,

   我们要求S(n)=∑(i:1~n)f(i),

   我们找到另一个积性数论函数g(n),则

    ∑(i:1~n) (f*g)(n)=∑(i:1~n)∑d|i g(d)f(i/d)

    把d提出来得,∑(i:1~n) (f*g)(n)=∑(d:1~n)g(d)∑d|i f(i/d)

    =∑(i:1~n)g(i)∑(j:1~(n/i))f(j)=∑(i:1~n)g(i)S(n/d)

   根据前缀和思想,g(1)S(n)=∑(i:1~n)g(i)S(n/i)-∑(i:2~n)g(i)S(n/i)

   =∑(i:1~n)(g*f)(i)-∑(i:2~n)g(i)S(n/i)

  

未完

   

   

莫比乌斯反演总结——Chemist的更多相关文章

  1. hdu1695 GCD(莫比乌斯反演)

    题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...

  2. BZOJ 2154: Crash的数字表格 [莫比乌斯反演]

    2154: Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2924  Solved: 1091[Submit][Status][ ...

  3. BZOJ2301: [HAOI2011]Problem b[莫比乌斯反演 容斥原理]【学习笔记】

    2301: [HAOI2011]Problem b Time Limit: 50 Sec  Memory Limit: 256 MBSubmit: 4032  Solved: 1817[Submit] ...

  4. Bzoj2154 Crash的数字表格 乘法逆元+莫比乌斯反演(TLE)

    题意:求sigma{lcm(i,j)},1<=i<=n,1<=j<=m 不妨令n<=m 首先把lcm(i,j)转成i*j/gcd(i,j) 正解不会...总之最后化出来的 ...

  5. 莫比乌斯函数筛法 & 莫比乌斯反演

    模板: int p[MAXN],pcnt=0,mu[MAXN]; bool notp[MAXN]; void shai(int n){ mu[1]=1; for(int i=2;i<=n;++i ...

  6. 【BZOJ-2440】完全平方数 容斥原理 + 线性筛莫比乌斯反演函数 + 二分判定

    2440: [中山市选2011]完全平方数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2371  Solved: 1143[Submit][Sta ...

  7. POI2007_zap 莫比乌斯反演

    题意:http://hzwer.com/4205.html 同hdu1695 #include <iostream> #include <cstring> #include & ...

  8. hdu.5212.Code(莫比乌斯反演 && 埃氏筛)

    Code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

  9. CSU 1325 莫比乌斯反演

    题目大意: 一.有多少个有序数对(x,y)满足1<=x<=A,1<=y<=B,并且gcd(x,y)为p的一个约数: 二.有多少个有序数对(x,y)满足1<=x<=A ...

随机推荐

  1. T1231 最优布线 codevs

    http://codevs.cn/problem/1231/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题目描述 Description 学校需要将n ...

  2. [Bzoj3631][JLOI2014]松鼠的新家 (树上前缀和)

    3631: [JLOI2014]松鼠的新家 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2350  Solved: 1212[Submit][Sta ...

  3. [转] OracleDataReader.Read()是否有值

    TongYu2009的原文地址 当你执行一次OracleDataReader.Read()是Bool型),注意是只读取一个!如果你的Select语句执行结果是空,或者所有的结果都已经读取完了则Orac ...

  4. 【APUE】一个fork的面试题及字符设备、块设备的区别

    具体内容见:http://coolshell.cn/articles/7965.html 字符设备.块设备主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,而块设备则不然, ...

  5. There is no PasswordEncoder mapped for the id "null"

    There is no PasswordEncoder mapped for the id "null" 学习了:https://blog.csdn.net/dream_an/ar ...

  6. OpenLayers3基础教程——OL3基本概念

    从本节開始,我会陆陆续续的更新有关OL3的相关文章--OpenLayers3基础教程,欢迎大家关注我的博客,同一时候也希望我的博客可以给大家带来一点帮助. 概述: OpenLayers 3对OpenL ...

  7. 剑指Offer面试题43(Java版):n个骰子的点数

    题目:把n个骰子仍在地上.全部骰子朝上一面的点数之和为s,输入n,打印出s的全部可能的值出现的概率. 解法一:基于递归求骰子的点数,时间效率不够高 如今我们考虑怎样统计每个点数出现的次数. 要向求出n ...

  8. 【Mongodb教程 第十课 】MongoDB 备份

    MongoDB 数据转储 创建备份MongoDB中的数据库,应该使用mongodump命令.此命令将服务器的所有数据转储到转储目录.有许多可供选择,通过它可以限制的数据量或创建备份您的远程服务器. 语 ...

  9. Cocos从入门到精通--《创建第一个项目:HelloWorld》

    上节课我们解说了cocos2-x v3.7版本号的下载安装,也展示了使用CocosStudio编译不同平台运行程序的方法,大家是不是对新版本号的Cocos引擎充满期待?今天我们就创建一个project ...

  10. Android数据与服务器交互的GET,POST,HTTPGET,HTTPPOST的使用

    Android有这几种方式,可以提交数据到服务器,他们是怎么使用的呢,这里我们来探讨一下. 这里的例子用的都是提交客户端的用户名及密码,同时本节用到的StreamTools.readInputStre ...