其他分享
首页 > 其他分享> > [康复计划]-数论基础

[康复计划]-数论基础

作者:互联网

感觉这几个月做的数学都是把数学当工具的数学题,欧拉函数、莫比乌斯之类的好像上一次做还是在上一次 好几年前,于是在洛谷上找了几个专题来练一练。隔了感觉有两三年了,其实好多东西都忘差不多了。

(待更新)


目录

零碎知识

一些可能会用到的零碎的知识点,最近做题遇上的。

欧拉函数和欧拉定理

因为是复习就不搞什么概念的引入了,数论里(英文里直接搜Euler function搜到的是欧拉的另一个函数,一般数论的欧拉函数叫Euler's totient function)我们定义欧拉函数\(\begin{aligned}\varphi(n)\end{aligned}\)表示\(1,2,\dots,n\)这些数里和\(n\)互质的数的个数,一般写成\(\begin{aligned}\varphi(n)=\sum_{i=1}^n [(n,i)=1]\end{aligned}\)这样子(后面会见到,写成这种艾佛森记号(也就是[表达式]这种记号)的形式可以用莫比乌斯函数搞一些操作啥的),这里我们说欧拉函数是个积性函数,即:\(\forall (n,m):f(n)f(m)=f(nm)\)。具体证明不写了,冲不动了。

算法竞赛里求值才是我们关心的,首先是一个比较显然的:如果\(p\)是质数,那样\(\varphi(p)=p-1\),进一步容易给出\(\varphi(p^k)=p^k-p^{k-1}=p^k(1-\frac{1}{p})\),于是不难给出一般的求法\(\begin{aligned}\varphi(n)=n\prod_{p_i} (1-\frac{1}{p_i})\end{aligned}\)。

于是,积性能用来做线性筛,而要求单个欧拉函数,如果\(n\)不是很大,就直接用上面的式子,\(O(\sqrt n)\)地求出单个\(\varphi(n)\),要更快的做法就是Pollard-Rho来做质因数分解。

接着从同余的角度看,\(\varphi(n)\)也可以说是\(n\)的既约剩余系的大小,于是$$\begin{aligned}(a,m)=1\rightarrow a{\varphi(m)}\prod_{i=1}{\varphi(m)} x_i=\prod_{i=1}{\varphi(m)}(ax_i)\equiv\prod_{i=1}{\varphi(m)}x_i(\bmod m)\end{aligned}$$

也就得到了一般说的欧拉定理\((a,m)=1,a^{\varphi(m)}\equiv 1(\bmod m)\)。

然后还有一个更强的扩展欧拉定理:

注意\(b<\varphi(m)\)的时候不一定成立,这一版也是一个题比较麻烦的地方。

扩展欧拉定理主要还是用来处理比较大的指数\(b\),以及注意到会把模\(m\)的问题转化为模\(\varphi(m)\)的问题,而\(\varphi(\varphi(\dots(m)))\)这种套娃下降的是非常快的,所以经常可以用来做一些套娃操作,比如luogu4139这题,求\(\begin{aligned}2^{2^{2^{\dots}}}\bmod p\end{aligned}\)的答案,设答案是\(x\),就可以转化成\(2^{x\bmod \varphi(p)+\varphi(p)}\),一直迭代到\(p=1\)为止。

还有CF上一个题(https://www.luogu.com.cn/problem/CF906D )也是用类似的性质。

卷积、莫比乌斯函数和莫比乌斯反演

冲不动了,懒得写了,有人看再更新。

一些练习

https://www.luogu.com.cn/problem/P2303 ,求\(\sum _{i=1}^n (i,n)\)的值,原式写成\(\sum_{i=1}^n \sum_{d=1}^n[(i,n)=d]\),这里上下界都是\(n\),就不上莫比乌斯了,直接就能写成欧拉函数:\(\sum_{d=1}^n \sum_{i=1}^n[(\frac{i}{d},\frac{n}{d})=1]\),最后就是\(\sum_{d|n} \varphi(\frac{n}{d})\)。

https://www.luogu.com.cn/problem/P3327 ,用到前面的结论,先写成\(\begin{aligned}\sum_{i=1}^n\sum_{j=1}^m \sum_{x|i} \sum_{y|j}[(x,y)=1]\end{aligned}\),然后大胆地把后面的写成莫比乌斯\([(x,y)=1]=\sum_{d|(x,y)}\mu (d)\),原来的式子一通化简成\(\begin{aligned}\sum_{d=1}^n \mu (d)\sum_{x=1}^{\lfloor \frac{n}{d}\rfloor}\lfloor\frac{n}{dx}\rfloor \sum_{y=1}^{\lfloor \frac{m}{d}\rfloor }\lfloor \frac{m}{dy}\rfloor \end{aligned}\),后面的取整就用到前面提到的性质,写成能除法分块的形式,然后\(O(\sqrt n)\)地解决。

https://www.luogu.com.cn/problem/P2257 ,和上一题类似,先改成枚举质数,然后上一个莫比乌斯,\(\begin{aligned}=\sum_{p\in \mathcal{P}}\sum_{d=1}^n \mu(d)\lfloor \frac{n}{pd}\rfloor \lfloor \frac{m}{pd}\rfloor \end{aligned}\)的形式,但写成这样还是不够快,这里我们做一个小小的变量替换,令\(T=pd\),然后交换次序,\(p\)加上一个\(p|T\)的限制:\(\begin{aligned}\sum_{T=1}^n \lfloor \frac{n}{T}\rfloor \lfloor \frac{m}{T}\rfloor \sum_{p\in \mathcal{P},p|T} \mu(\frac{T}{p})\end{aligned}\)。后面的式子可以\(O(\frac{n}{\log n}\log n)=O(n)\)地预处理出来,结合前缀和跟前面除法分块。

标签:lfloor,frac,数论,康复,rfloor,计划,varphi,aligned,sum
来源: https://www.cnblogs.com/yoshinow2001/p/15294579.html