稍微整理一下蓝书上数论章节的知识点
1、约数和公式:一个数的约数和= (1+p1+p12+...+p1c1)∗(1+p2+p22+...+p2c2)∗...∗(1+pk+pk2+...+pkck) ( 1 + p 1 + p 1 2 + . . . + p 1 c 1 ) ∗ ( 1 + p 2 + p 2 2 + . . . + p 2 c 2 ) ∗ . . . ∗ ( 1 + p k + p k 2 + . . . + p k c k ) (p为这个数的各个质因数,c表示为各个质因数的次方,k表示质因数个数)
2、1~N中的任何数的不同质因子很少(可以将最小的几个质因子乘起来看具体不会超过多少个),所有质因子的指数总和很小(可以把2(最小质数)求幂,看一下几次幂会超过N确定具体范围)。这个tips是常用的约数类问题突破口,抓住质因数比比较少且指数也比较少这一点可以通过搜索来组成一个数的约数。
3、求一个数的质因数只需要O(sqrt(n))的时间复杂度,先筛出素数,然后将原数除去小素数,如果原数最后不为1,那么这个数肯定也是素数
4、费马小定理: ap≡a(mod p)(p∈prime) a p ≡ a ( m o d p ) ( p ∈ p r i m e )
5、欧拉定理: aφ(n)≡1(mod n)(a,n互质) a φ ( n ) ≡ 1 ( m o d n ) ( a , n 互 质 )
6、欧拉定理推论: ab≡ab mod φ(n)(mod n) a b ≡ a b m o d φ ( n ) ( m o d n )
7、一个正整数n,设它其中一个约数为p,那么 gcd(i,n)=p g c d ( i , n ) = p 的有 φ(n/p) φ ( n / p ) 个
8、乘法逆元:若在 mod p m o d p 意义下,对于一个整数a, 有a∗b≡1(mod p) 有 a ∗ b ≡ 1 ( m o d p ) ,那么这个整数b即为a的 乘法逆元,同时a也为b的乘法逆元, a a 的逆元表示为 inv(a) i n v ( a ) 。(即模意义下的倒数)
求法:
1、费马小定理+快速幂: inv(a)=a∗ap−2≡1(mod p) i n v ( a ) = a ∗ a p − 2 ≡ 1 ( m o d p )
2、线性方程+扩展欧几里得: ax≡1(mod p) a x ≡ 1 ( m o d p ) 可以转化成 ax+py=1 a x + p y = 1 的线性方程的形式,可用exgcd求解
9、中国剩余定理(CRT):
设 m1,m2,...,mn m 1 , m 2 , . . . , m n 是两两互质的整数, M=∏ni=1mi M = ∏ i = 1 n m i , Mi=M/mi M i = M / m i , ti t i 是线性同余方程 Miti≡1(mod mi) M i t i ≡ 1 ( m o d m i ) 的一个解,即 ti t i 是 Mi M i 在 mi m i 意义下的逆元。
那么对于任意的n个整数 a1,a2,...,an a 1 , a 2 , . . . , a n ,关于 x x 的方程组:
x≡a1(mod m1), x ≡ a 1 ( m o d m 1 ) ,
x≡a2(mod m2) x ≡ a 2 ( m o d m 2 )
... . . .
x≡an(mod mn) x ≡ a n ( m o d m n )
有整数解,且解为 x≡∑ni=1aiMiti(mod M) x ≡ ∑ i = 1 n a i M i t i ( m o d M )
10、二项式定理: (a+b)n=∑nk=0Cknakan−k(其中C为组合数) ( a + b ) n = ∑ k = 0 n C n k a k a n − k ( 其 中 C 为 组 合 数 )
11、Lucas定理: Cmn=Cm/pn/p∗Cmmodpnmodp(其中(其中C为组合数,p为模数) C n m = C n / p m / p ∗ C n m o d p m m o d p ( 其 中 ( 其 中 C 为 组 合 数 , p 为 模 数 )
12、对于模意义下求组合数,考虑Lucas。如果模数不为质数,将模数分解质因数,再分别用Lucas求出结果,然后用中国剩余定理求解。
13、Catlan数
给定n个0,n个1,他们按照某种顺序排成长度为2n的序列,满足任意前缀中0的个数都不少于1的个数的序列的数量为 Catn=Cn2nn+1 C a t n = C 2 n n n + 1
前几个数:1、2、5、14、42、132……
Catalan数推论:
1.n个左括号和n个右括号组成的合法括号序列的数量为 Catn C a t n
2.1,2,…,n经过一个栈,形成的合法出栈序列的数量为 Catn C a t n
3.n个节点构成的不同二叉树的数量为 Catn C a t n
4.在平面直角坐标系上,每一步只能向上或向右走,从(0,0)走到(n,m)并且除两个端点外不接触直线y=x的路线数量为 2∗Catn−1 2 ∗ C a t n − 1
14、莫比乌斯反演
(转自https://blog.csdn.net/acdreamers/article/details/8542292)
15、对于与gcd有关的莫比乌斯反演,一般我们都是套路的去设 f(d) f ( d ) 为 gcd(i,j)=d g c d ( i , j ) = d 的个数, F(d) F ( d ) 为 gcd(i,j)=d和d的倍数 g c d ( i , j ) = d 和 d 的 倍 数 的个数。