2020-02-25
入门数学知识
一、数论
1.质数
定义: 在大于1的整数中,如果只包含1和本身这两个约数,就被称为
质数(素数)。
(1).质数的判定--试除法。 O(sqrt(n))
设n为被判断数,d为其约数,可以得到另一个约数为n/d,
故约数是成对出现的,所以判断条件可以只循环到n的平方根。
(2).分解质因数--试除法。 O(sqrt(n))
从小到大枚举n的所有数i,如果n和i相模等于0,就把出现的次数存下来。
(3).朴素筛法 大概O(nlogn),计算需要知道调和级数
从2开始,把每个数的所有倍数删掉。最后留下来的数是质数。
(4).筛法简单优化--埃氏筛法 大约O(nloglogn)
把朴素筛法中的从2开始枚举换为从2开始,只筛质数的倍数。
质数定理:1-n当中有n/(ln n)个质数。
(5).线性筛法
核心:n只会被它的最小质因子筛掉。
① i%pj == 0
pj一定是i的最小质因子,pj一定是pj*i的最小质因子。
② i%pj != 0
pj 一定小于i的所有质因子,pj也一定是pj*i的最小质因子。
2.约数
(1).试除法求一个数的所有约数
(2).约数个数
基于算术基本定理。
公式。
(3).约数之和
公式。
(4).欧几里得算法(辗转相除法)
3.欧拉定理
(1).欧拉函数 φ(n) 1~n中与n互质的数的个数。
(待更新公式)
公式的证明应用到了容斥原理。
容斥原理推导欧拉函数:
①:从1-n中去掉p1、p2……pk所有的倍数。
②:有些数被减去了两次次,加上所有pi*pj的倍数。
③:减去所有pi*pj*pk的数(减了三次又加了三次,相当于没变)
④:以此类推。
(2).欧拉定理:
若a与n互质,则a^φ(n)≡1(mod n)
4.快速幂
能够快速的求出来a^k mod p 时间复杂度O(log k)
核心思路:反复平方法。
原理:
5.扩展欧几里得算法
裴蜀定理:对于任意正整数a,b,一定存在整数x,y,使得
ax+by=(a,b)
6.中国剩余定理
7.高斯消元
在O(n^3)之内求解一个包含n个方程和n个未知数的多元线性方程的解。
利用初等行列变换……
高斯消元:
枚举每一列,设为c
①找到绝对值最大的一行
②将该行换到(未固定的行中的)最上面
③将此行此列的数变成1(系数)
④将下面所有行的第c列消成0
8.组合计数
递推方式O(n^2),预处理方式O(n logn)(!),卢卡斯定理,卡特兰数。
9.容斥原理
10.博弈论