数论入门1

一个菜鸡对数论的一点点理解...

莫比乌斯函数

定义函数$\mu(n)$为:

当n有平方因子时,$\mu(n)=0$。

当n没有平方因子时,$\mu(n)=(-1)^{\omega(n)}$,$\omega(n)$表示n不同质因子的个数。

性质1:

$\sum_{d|n}\mu(d)=[n=1]$

证明:我们把n分解质因数,则原式$=(-1+1)^{\omega(n)}=0$。

因为对于不同的质因子,只有选和不选两种方案,这是一个组合数相加的形式,偶数加奇数减,根据二项式定理得到原式$=(-1+1)^{\omega(n)}=0$。

但是$n=1$时,没有质因子,原式$=$$ 0\choose0$$=1$。

性质2:

$\mu(n)$是积性函数。

证明显然。

欧拉函数

定义函数$\varphi(n)$为:小于等于n的正整数中和n互质的数的个数。

那么根据欧拉函数的定义,再根据上面的性质,我们可以在$O(\sqrt n)$的时间内通过分解质因数得到$\varphi(n)$。

具体方法,对于每个不同的质因子,相当于把它在1-n中的倍数去掉,那么就有$n*(1-\frac{1}{pi})$个,连乘起来即可。

性质1:

对于质数p,$\varphi(p)=p-1$。

性质2:

对于质数p,$\varphi(p^k)=(p-1)*p^{k-1}$

证明:首先,对于$p|n,q< p,q\perp p$,则$q+pk\perp n$。

那么这就很显然了。

性质3:

$\varphi$是个积性函数。

根据定义式就能看出来。

性质4:

欧拉定理:对于互质的a,m有:$a^{\varphi(m)} \equiv 1 \pmod {m}$。

不会证明,自行百度。

性质5:

小于n且与n互质的正整数之和为$\varphi(n)*n/2$。

证明:首先,若$p|n$,则$n-p|n$。

那么对于所有p,把它和n-p合到一起算,就是$\varphi(n)*n$,最后除以2就行了,因为每对数算了两次。

对于n=1不适用。

性质6:

$\sum\limits_{d|n} \varphi(d) = n$

证明:

$n=\sum_{i|n} \sum_{j=1}^n[gcd(j,n)=i]$

$=\sum_{i|n}\sum_{j=1}^{n/i}[gcd(j,n)=1]$

$=\sum_{i|n}\varphi(n/i)$

$=\sum_{i|n}\varphi(i)$

得证。

其中第一句就是,把1-n中的数按照gcd进行分类并且计数。

狄利克雷卷积

定义卷积$(f*g)(n)=\sum_{d|n}f(d)g(\frac{n}{d})$

性质1:

两个积性函数的狄利克雷卷积还是积性函数。

证明:感性理解一下,两个互质的下标乘起来,相当于两个和式乘起来,因为是互质的相当于枚举到了乘积的所有约数,因为和式里面都是积性函数所以乘起来也是积性函数。

性质2:

三大运算规律:结合律,交换律,分配律。

感性理解一下就好啦。

然后给一点常用函数吧,杜教筛和莫比乌斯反演的时候有点用的。

$\mu(n)$,不解释了。

$\varphi(n)$,不解释了。

$\sigma(n)$,表示n的约数和。

$d(n)$,表示n的约数个数。

$e(n)$,等于$[n=1]$。

$I(n)$,等于1。

$id(n)$,等于n。

其中后三个是完全积性函数。

然后给点公式吧。

$\mu*I=e$

$\varphi*I=id$

$id*\mu=\varphi$

$I*I=d$

$I*id=\sigma$

$\varphi(n)=\mu*id \quad->\quad\frac{\varphi(n)}{n}=\sum_{d|n}\frac{\mu(d)}{d}$

还有一些就不列举啦(其实是不会)

线性筛

一种可以在$O(n)$时间内求一个积性函数在1-n的值的算法,顺便还可以求出1-n中的素数表。

因为保证了每个数只会被它的最小质因子筛到。

代码实现:

void getprime()

{

for(int i=2;i<=n;i++)

{

if(!vis[i]) pri[++tot]=i,mu[i]=-1,phi[i]=i-1;

for(int j=1;j<=tot&&i*pri[j]<=n;j++)

{

vis[i*pri[j]]=1;

if(i%pri[j]==0)

{

mu[i*pri[j]]=0;

phi[i*pri[j]]=phi[i]*pri[j];

break;

}

mu[i*pri[j]]=-mu[i];

phi[i*pri[j]]=phi[i]*(pri[j]-1);

}

}

}

就解释一句吧。

if(i%pri[j]==0){break;}

这一句是什么呢。质数表是递增的,如果i是pri[j]的倍数了,那么后面的i*pri[k]的最小质因子绝对不可能是pri[k],而在之后一定会被筛到,所以就要break掉了。

所以我们可以看出,这个i只是起到了枚举质数倍数几倍的作用,这就很清晰了。

然后一个积性函数f能够线性筛的话,需要满足的性质有:

1.对于质数p,$f(p)$能够快速计算。

2.对于n中出现过的一个质因子p,$f(n*p)$能够快速计算。

然后如果需要有辅助函数的话,辅助函数也一定要是积性函数,一般都是维护最小质因子的辅助函数,比如筛约数个数,那么我们维护最小质因子的出现次数就可以很容易计算啦。

莫比乌斯反演

已知$F(n)=\sum_{d|n}f(d)$

那么$f(n)=\sum_{d|n}\mu(d)F(\frac{n}{d})$。

证明:

$F=f*I$

$F*\mu=fI\mu$

$F*\mu=f*e$

$F*\mu=f(n)$

得证。

同理,已知$F(n)=\sum_{n|d}f(d)$

那么$f(n)=\sum_{n|d}\mu(\frac{d}{n})\cdot F(d)$

不过做题的时候用的最多的还是两种函数的性质,直接反演用的比较少啦。

整除分块

一种可以在$O(\sqrt n)$时间内求上界与除法下取整有关的式子的算法。

问题:求$\sum_{i=1}^n\lfloor\frac{n}{i}\rfloor,n\leq1e9$

我们先发现一点关于$\lfloor\frac{n}{i}\rfloor$的性质。

对于$\lfloor\frac{n}{i}\rfloor$,只有$2\sqrt n$种取值。

设$\lfloor\frac{n}{j}\rfloor=\lfloor\frac{n}{i}\rfloor$,则$j$的最大值为$\large \left \lfloor \frac N{\left \lfloor \frac Ni \right \rfloor } \right \rfloor$

证明:

第一个,对于小于$\sqrt n$的$i$,显然最多产生两个贡献$\lfloor\frac{n}{i}\rfloor$和$i$,所以是$2\sqrt n$。

第二个:

设$\large{ \lfloor \frac Ni \rfloor}=k$,于是可以写成$ki+p=N,1\le p

[我太菜了不会证,搬别人的]

贴段代码,解决上面的问题。

for(int l=1,r;l<=n;l=r+1)

{

r=n/(n/l);

ans+=(r-l+1)*(n/l);

}

杜教筛

杜教筛是一种可以在低于线性时间内计算一类积性函数前缀和的算法。

设$S(n)=\sum_{i=1}^{n}f(i)$

然后我们找一个积性函数$g(i)$

$(g*f)(i)= \sum_{d|i}g(d)f(\frac{i}{d})$

$\sum_{i=1}^{n}(g*f)(i)= \sum_{i=1}^n\sum_{d|i}g(d)f(\frac{i}{d})$

和式变换一下

$\sum_{d=1}^{n}g(d)\sum_{d|i}f(\frac{i}{d})$

$\sum_{d=1}^{n}g(d)\sum_{i=1}^{n/d}f(i)$

$\sum_{d=1}^ng(d)S(\frac{n}{d})$

我们现在要求$S(n)$

然后发现,当$d=1$时,有个$g(1)S(n)$

那么我们提出来

$g(1)S(n)=\sum_{i=1}^ng(i)S(\frac{n}{i})-\sum_{i=2}^ng(i)S(\frac{n}{i})$

$g(1)S(n)=\sum_{i=1}^n(g*f)(i)-\sum_{i=2}^ng(i)S(\frac{n}{i})$

那么只要两个函数卷积的前缀和很好算,g的前缀和很好算,就可以直接记忆化了。

复杂度不会证,是$O(n^\frac{3}{4})$的,如果预处理前$n^\frac{2}{3}$项的话,复杂度就变成了$O(n^\frac{2}{3})$。

那么如果要筛$\mu$的话,我们知道$\mu$和$I$的卷积十分好算,然后$I$的前缀和也很好算,可以试试:

$S(n)=1-\sum_{i=2}^{n}S(\frac{n}{i})$

对这就完了。

$\varphi$也挺简单的,和$I$卷积。

$S(n)=\sum_{i=1}^{n}i-\sum_{i=2}^{n}S(\frac{n}{i})$

对于不同的积性函数,配上一个好的g函数,能方便很多。

常见套路就是比如说有个$i*f(i)$,那么我们拿id求个卷积,是不是i就被消掉了呢?

如果是$i^2$也可以考虑用$g(i)=i^2$来做卷积。

以此类推啦。

题目

挖个坑,待填

matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...相关推荐

  1. CCPC-Wannafly Winter Camp Day3 (Div2, onsite) F 小清新数论 欧拉函数的利用 莫比乌斯反演 杜教筛

    F - 小清新数论 做法一:欧拉函数 #include<stdio.h> #include<bits/stdc++.h> using namespace std; #defin ...

  2. 【bzoj4176】Lucas的数论 莫比乌斯反演+杜教筛

    题目描述 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目"求Sigma(f(i)),其中1<=i<=N" ...

  3. [复习]莫比乌斯反演,杜教筛,min_25筛

    [复习]莫比乌斯反演,杜教筛,min_25筛 莫比乌斯反演 做题的时候的常用形式: \[\begin{aligned}g(n)&=\sum_{n|d}f(d)\\f(n)&=\sum_ ...

  4. hdu1695(莫比乌斯)或欧拉函数+容斥

    题意:求1-b和1-d之内各选一个数组成数对.问最大公约数为k的数对有多少个,数对是有序的.(b,d,k<=100000) 解法1: 这个能够简化成1-b/k 和1-d/k 的互质有序数对的个数 ...

  5. 数论之互质与欧拉函数

    文章开始前先给大家安利我学长以前写的数论的blog:aliayc 文章目录 互质 欧拉函数 质因数分解求欧拉函数 筛法求欧拉函数 性质 积性函数 定义 性质 题目 互质 定义 ∀ a , b ∈ N ...

  6. 数论 ——— 费马-欧拉定理(欧拉函数)

    百度百科 - 欧拉定理 欧拉定理主要是这个公式 (a,n)≡1的条件下(即a,n互为质数)满足: 其中φ**(n)为欧拉函数**,φ(n)表示在不超过n的正整数中与n互质的数的个数 例如 φ(1) = ...

  7. 数论 毕达哥斯拉三元组 + 欧拉函数 + 容斥原理 hdu3939

    涉及的知识点还是挺多的,这题时间特卡.... 1.毕达哥斯拉三元组: 三元组(a,b,c),其中a,b,c无公因数,且满足a² +b² =c². a为奇数,b为偶数,c为奇数 可以得到如下勾股数组定理 ...

  8. 2019-ACM-ICPC-南京区网络赛-E. K Sum(莫比乌斯反演 + 杜教筛)

    K Sum 推式子 Fn(k)=∑l1=1n∑l2=1n⋯∑lk=1n(gcd(l1,l2,-,lk))2=∑d=1nd2∑l1=1nd∑l2=1nd⋯∑lk=1nd(gcd(l1,l2,-,lk)= ...

  9. P4450-双亲数,P5221-Product,P6055-[RC-02]GCD【莫比乌斯反演,杜教筛】

    除了最后一题都比较简单就写一起了 P4450-双亲数 题目链接:https://www.luogu.com.cn/problem/P4450 题目大意 给出A,B,dA,B,dA,B,d求有多少对(a ...

最新文章

  1. gitlab+jenkins+maven+docker持续集成(四)——Extended E-mail Notification配置
  2. 11旋转编码器原理_科普小知识:八分钟了解电机编码器!
  3. 桌面虚拟化之远程协助
  4. PTA团体程序设计天梯赛篇(一)----模拟专题
  5. centos根分区扩容方法linux公社,Centos5给/根分区扩容
  6. 【原】Linux设备网络硬件管理
  7. [XMOVE自主设计的体感方案] XMove Studio管理系统(二)应用开发API简要介绍
  8. [剑指offer]面试题5:从尾到头打印链表
  9. python中求包含5的数_Python 内置函数 ( ) 可以返回列表、元组、字典、集合、字符串以及 range 对象中元素个数。_学小易找答案...
  10. redis stream java消息队列_Redis 异步消息队列与延时队列
  11. lvs web服务器不响应,lvs web服务器不响应
  12. C++移动构造函数以及move语句简单介绍
  13. ERP实施--常见问题
  14. 【转】福昕pdf套件注册码激活
  15. 分数加减乘除混合运算带答案_分数加减乘除混合运算专项训练
  16. 常见名称解析_著名软件著名计算机语言
  17. 测试开发(社招)面经:度小满
  18. H3C设备查看信息命令
  19. 彩色图像的直方图绘制
  20. 要和文心一言来一把你画我猜吗?

热门文章

  1. git 使用过程遇到的问题
  2. opencv绘制椭圆
  3. eclipse识别不出java项目_Eclipse项目无法识别Java项目; 类路径问题
  4. android 配置aspect_Android全面屏适配
  5. 修改ua html5,html5中bootstrap表单样式文件html,兼容多种UA终端
  6. 对教材-人工智能导论的不同看法
  7. 【unity】遇到Multiple precompiled assemblies with the same name的解决方案
  8. 作为程序员的硬实力是什么 ?
  9. 删除office的产品秘钥
  10. 病毒先生:天网恢恢,区块链行业的安全由谁来守护?