数的整除性问题
整除
- a | b 代表 a整除b,即b除以a。
最大公约数与最小公倍数
- ab = lcm(a,b) * gcd(a,b)
- (a,b)表示最大公因数。
- [a,b]表示最小公倍数。
扩展欧几里得
素数问题
素数
- 素数定理:对于一个正实数x,小于x的素数的个数略大于 x/lnx。
例题:小于10^n的素数的个数值有多少位? - 哥德巴赫猜想:每个 >=6 的正偶数可以写成两个素数的和。还未证实。
- 0和1既不是素数也不是合数。
素数测试
- 埃拉托色尼筛法: 逐个判断。
- 6N+-1法:素数只可能是6N+-1,直接跳跃性筛选。耗时在筛,不在于枚举sqrt的位置,所以效率没有明显提高。
- 复杂度分析:筛法复杂度为常数不大的线性复杂度,朴素测试的复杂度为n*sart(max),所以当 数的个数 > sqrt(数的可能最大值)应该用筛法,否则应该用朴素测试。
- 素数测试详细代码
算数基本定理
- 唯一分解定理 模板
- n!的素因子分解中素数p的幂(有多少个p相乘)为:n/p + n/p^2 + n/p^3 …知道p^ 大于n。
例题:计算N!末尾0的个数。
梅森素数
同余问题
同余概述
- a ≡ b(mod m)表示用m去除a和b所得余数相同。
- 同余问题容易找到循环节。
线性同余方程
- 由 ax ≡ b(mod m) 可以得到 ax + my = b。gcd(a,b) | b;
- 求解x时,先求得x0,然后左右同乘得到原方程的特解,然后再求出通解。
- 一元线性同余方程组,类似中国剩余定理
- 同余方程组恰有d个解,d是最大公因数。
- 多元线性同余方程组(待更新)
- 多项式同余方程:
a. 模p的多元方程,可以将P素因子分解,分别求模素因子的解,利用中国剩余定理求得模p的解。
b. (待更新)
高次同余方程
待更新
快速幂模m算法
中国剩余定理
不定方程
解不定方程
- 二元一次不定方程,同前面扩展欧几里得所讲。
- n元一次不定方程,设a1x1 + a2x2 + a3x3 + a4x4 = c所有系数的最大公因数应该整除c。将方程转换为方程组递归求解,a1x1 + a2x2 = d2t2,d2t2 + a3x3 = d3t3,d3t3 + a4x4 = c.
- m个n元一次不定方程,先消元,然后转换成n-m+1元一次不定方程,再求解,要先根据题意提炼出来方程,有整数解的关系类比二元一次方程。