Updated on 2020.8.7
想了想把积性函数一系列内容引用的挺多的。
独立出去了。
Updated on 2020.8.8
留了两个大坑:二次剩余,类欧几里得算法。
跑路了!
写在前面
黑历史 数论知识整理。
当时还觉得自己挺 nb,现在一看写的就跟收纳胶囊一样。
但一些简单知识还是能看的,这里就不再整理了。
扩展欧拉定理
模 (p) 意义下,对于 (a^b),有如下性质。
不必保证 ((a,p) = 1)。
题目
P5091 【模板】扩展欧拉定理
P4139 上帝与集合的正确用法
(apmod m) 的阶
若 ((a,m) = 1),记 (x) 为最小的正整数,使得 (a^x equiv 1 pmod m),称 (x) 为 (a) 关于模 (m) 的阶,记为 (operatorname{ord}_{m}a)。
有 (operatorname{ord}_{m}amid varphi(m)),反证法略证:
设 (t
mid varphi(m)),(t) 为最小的 满足 (a^{t} equiv 1pmod m) 的正整数。
则有:(varphi(m) = qt+r (1le r<t)),
且有 (a^m = a^{qt+r} equiv 1 pmod m) 成立。
则: (a^{r} equiv 1pmod m)。
又 (r< t),与已知矛盾,故结论不成立。
求阶方法:
- 预处理 (varphi (m)) 的所有因子,从大到小枚举检查。
单次检查复杂度 (O(log varphi(m))) ,但因子的个数会比较恐怖,总复杂度并不优秀。 - 发现 (x) 为满足 (a^x equiv 1 pmod m) 的 (varphi(m)) 的最小因子。
设 (x) 初始值为 (varphi(m)),考虑枚举 (varphi(m)) 的所有质因子试除。
若满足 (a^{frac{x}{p}} equiv 1),则 (x = frac{x}{p})。最后的 (x) 即为答案。
复杂度 (O(klog varphi(m))),(k) 为 (varphi(m)) 的质因子个数。
原根
若 ((g,m) = 1),且 (operatorname{ord}_{m} g = varphi (m)),则称 (g) 为 (m) 的一个原根。
(g) 为 (m) 的一个原根 当且仅当 ({g^0,g^1,cdots g^{varphi(m)-1} pmod m}) 内元素均不同,构成了模 (m) 的简化剩余系。
若 (m) 存在原根,则 (m=1,2,4,cdots p^a,2p^a) ((p) 为奇素数,(ain mathbf{N}^+)) 。
检验原根
设 (p_1,p_2,cdots ,p_k) 为 (varphi(m)) 的所有不同的质因子。
对于 满足 ((g,m)=1) 的正整数 (g),(g) 是 (m) 的原根,当且仅当对任意 (1le ile k),都有 (g^{dfrac{varphi(m)}{p_i}}
otequiv 1 pmod m)。
需要枚举质因子 + 快速幂,单次检验复杂度为 (O(log^2 )) 级别。
略证:
若 (g) 不是 (m) 的原根,则 (operatorname{ord}_{m}g< varphi (m))。
又 (operatorname{ord}_{m}g mid varphi(m)),考虑枚举 (varphi(m)) 的约数进行检验。
显然,(left{dfrac{varphi(m)}{p_i}
ight}) 中包含了 (varphi(m)) 所有约数的倍数。
通过检验 (g^{frac{varphi(m)}{p_i}}) 则可判断 (operatorname{ord}_m g<varphi(m)) 是否成立。
求原根:
原根密度很大,大约是 (n^{0.25})。
- 可从 2 开始枚举 (g),并进行检验,可找到最小的原根。
- 直接随机一个数并进行检验。
复杂度均约为 (O(n^{0.25}))。
原根有什么用
NTT!虽然还不会
指数方程
形如下列形式的方程:
求解方法 BSGS。
二次剩余
对于一个数 (a),若 (a) 不是 (p) 的倍数且模 (p) 同余于某个数的平方,则称 (a) 为模 (p) 的二次剩余。
一个不是 (p) 的倍数的数 (a),不同余于任何数的平方,称其为模 (p) 的 非二次剩余 。
对二次剩余求解,即对常数 (a) 解下列方程:
可以认为是求模意义下的开方。
咕咕咕了,详见: oi-wiki
组合数取模
详见:组合数取模。
积性函数
若(gcd(x,y) = 1)且 (f(xy)=f(x)f(y)), 则(f(n))为积性函数。
性质,举例详见:积性函数。
莫比乌斯函数
(mu) 为莫比乌斯函数,定义为
性质,补充性质详见:莫比乌斯函数。
狄利克雷(Dirichlet)卷积
定义两个数论函数 (f,g) 的狄利克雷卷积为
建议阅读 算法学习笔记(35): 狄利克雷卷积 By: Pecco。
性质,举例详见:狄利克雷卷积。
反演
给定数列 (f_i, g_i),存在:
[g_n = sum_{i=0}^{n}a_{n,i}f_i ]这里使用 (f) 推出了 (g),反演的过程就是使用 (g) 推出 (f)。
也就是找到系数数组 (b),使得:[f_n=sum_{i=0}^{n}b_{n,i}g_i ]引用自学长 fastle 的课件。
详见:反演。
杜教筛
可在低于线性时间的复杂度内 处理数论函数的前缀和。
详见:杜教筛。
类欧几里得算法
写在最后
参考资料:
算法学习笔记(35): 狄利克雷卷积 By: Pecco。
杜教筛 - pengym。
oi-wiki。
交响辉针城来了 /se
ddcsb
最新一话醉蝶华观后感:
弱受灵梦可爱!
文文可爱!