基础数论

剩余

剩余类

在模$m$的意义下,余数相同的归为一个集合,所有整数被分为$m$个集合。
这些集合被称为模$m$剩余类。

完系

一个整数的集合,对$m$取模后,余数遍历了$0,1,2,…,m-1$。
那么该整数集合是模$m$完全剩余系,如${-4,3,5,10}$,即为模$4$的完全剩余系。

定理
设$a,b,c,d$为整数,$m$为正整数,则:

1.$a equiv b(mod m) ,且 d | m,则 a equiv b (mod d)$

2.若$a equiv b(mod m) ,则 (a,m) = (b,m)$

3.$a equiv b(mod m_i )(1 leq i leq n)同时成立,当且仅当 a equiv b (mod[m_1,m_2,...,m_n])$

#扩展欧几里得算法

令$d=(a,b)$,求$ax+by=d$的$x,y$

$ax+by=d,bx_1+(amod b)y_1=d$

$bx_1+(a-lfloorfrac{a}{b} floorcdot b)y_1=d$

$bx_1+ay_1-lfloorfrac{a}{b} floor cdot by_1=d$

$ay_1+b(x_1-lfloorfrac{a}{b} floor cdot y_1)=d$

$x=y_1,y=x_1-lfloorfrac{a}{b} floor cdot y_1$

当$gcd$进行到$b=0$时,显然有$x=1,y=0$

线性同余方程

N元一次不定方程(组)

有$n$元一次不定方程$a_1x_1+a_2x_2+…+a_nx_n=c(a_1,a_2,…,a_n,cin N)$。

该方程有解的充要条件是$(a_1,a_2,…,a_n)|c$。

$(a_1,a_2)=d_2,(a_2,a_3)=d_3,…$

$left{egin{array}\a_1x_1+a_2x_2=d_2t_2\d_2t_2+a_3x_3=d_3t_3\…\d_{n-1}t_{n-1}+a_nx_n=c end{array} ight.$

解出最后一个迭代一下就好了。

$m$个$n$元一次不定方程的方程组可以消元成$n-m+1$元的一次不定方程组。

求一元线性同余方程

$ax equiv b(mod m)$,令$d=(a,m)$

若$d|b$,那么有$d$个模m不同的解(可以通过简单的证明得证)。

否则无解。

将式子转为$ax+my=d$,可以用扩展欧几里得算法求解。

求一元线性同余方程组

1.合并法:

$x=b_1(mod m_1)$

$x=b_2(mod m_2)$

有解的充要条件是$(m_1,m_2)|(b_1-b_2)$,小于$m$的解只有一个。

两个式子转为不定方程再联立可得$b_1-b_2=m_2y_2-m_1y_1$

套用扩展欧几里得算法

2.中国剩余定理:

设$m_1,m_2,…,m_r$为两两互素的正整数

$left{egin{array}\ xequiv a_1(mod m_1)\xequiv a_2(mod m_2)\…\xequiv a_r(mod m_r) end{array} ight.$

有模$M=m_1m_2…m_r$的唯一解。

令$M_i=Pi_{j eq i}m_j$,求出$p_i,q_i$使得$M_ip_i+m_iq_i=1$

令$e_i=M_ip_i$,有:

$e_i=$$left{egin{array}\ 0(mod m_i),j eq i \ 1(mod m_j),j=i end{array} ight.$

所以$e_1a_1+e_2a_2+…+e_na_n$是方程的解,对$M$取模即为小于$M$的解。

逆元

扩展欧几里得算法

$ax equiv 1(mod m)$,$x$被称为$a$在模$m$的意义下的逆元。

显然有$ax+my=1$,套用扩展欧几里得算法即可。

注意$x$是正整数,要取模的。

费马小定理

对于素数$p$,我们有$a^{p-1}equiv 1(mod p)$。

显然有$a^{p-2}equiv a^{-1}(mod p)$,使用快速幂即可求解。

若$(a,m)=1$,则有$x^{phi(m)}equiv 1(mod m)$。

线性求逆元

$p=kcdot i+r$可以得到$kcdot i+r equiv 0(mod p)$

整理一下可以得到$i^{-1}equiv -k cdot r^{-1}(mod p)$

所以有$i^{-1}equiv -lfloorfrac{p}{i} floorcdot (pmod i)^{-1}$

递推即可。

高次不定方程

周期性

对于$A^xequiv B(mod C)$这个方程。

最大周期不超过$C$。

Baby-step giant-step算法

由周期性,我们可以求解$xleq C$时候的解。

令$i=lfloorsqrt C floor$,那么有$x=pi+q$。

整理可得$A^{pi}=A^{-q}B$,可以用$hash$表进行预处理匹配了。

上面这个算法只有$(A,C)=1$的时候可以使用。

令$d=(A,C)$。

这时候我们可以将原方程变为$frac{A}{d}A^{x-1}equiv frac{B}{d}(mod frac{C}{d})$

如果还不互素,那么重复上面那个操作即可。

显然如果$d$不是$B$的因子,那么无解。

原根

阶的定义

对于方程$a^requiv 1(mod n)$。

当$(a,n)=1$时,最小的正整数r被称为$a$模$n$的阶,记为$Ord_n(a)$。

阶的性质

1.对于任意一个正整数$t$满足$a^tequiv 1(mod n)$,显然有$r|n$。

2.$r|phi(n)$,由费马小定理得证。

原根的定义

若$a$模$m$的阶等于$phi(m)$,则称$a$为模$m$的一个原根。

原根的解法

从小到大暴力枚举正整数$g$。

对于$m-1$的每一个质因子$a$,检查$g^{frac{m-1}{a}}equiv 1(mod m)$时候成立。

成立则说明$g$不是原根。

N次剩余

方程$x^Nequiv a(mod p)$,本节只介绍$p$为素数的情况。

令$g^y=x,g^t=a$,则有$g^{yN}equiv g^t(mod p)$

由原根的性质我们可以直接得到$yNequiv t (mod p-1)$

$t$的取值可以用$BSGS$算法解决,然后解方程即可。