基础数论

剩余

剩余类

在模$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+(a\mod b)y_1=d$

$bx_1+(a-\lfloor\frac{a}{b}\rfloor\cdot b)y_1=d$

$bx_1+ay_1-\lfloor\frac{a}{b}\rfloor \cdot by_1=d$

$ay_1+b(x_1-\lfloor\frac{a}{b}\rfloor \cdot y_1)=d$

$x=y_1,y=x_1-\lfloor\frac{a}{b}\rfloor \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,c\in N)$。

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

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

$\left\{\begin{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}\right.$

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

$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\{\begin{array}\\ x\equiv a_1(\mod m_1)\\x\equiv a_2(\mod m_2)\\…\\x\equiv a_r(\mod m_r) \end{array}\right.$

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

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

令$e_i=M_ip_i$,有:

$e_i=$$\left\{\begin{array}\\ 0(\mod m_i),j \neq i \\ 1(\mod m_j),j=i \end{array}\right.$

所以$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=k\cdot i+r$可以得到$k\cdot i+r \equiv 0(\mod p)$

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

所以有$i^{-1}\equiv -\lfloor\frac{p}{i}\rfloor\cdot (p\mod i)^{-1}$

递推即可。

高次不定方程

周期性

对于$A^x\equiv B(\mod C)$这个方程。

最大周期不超过$C$。

Baby-step giant-step算法

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

令$i=\lfloor\sqrt C\rfloor$,那么有$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^r\equiv 1(\mod n)$。

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

阶的性质

1.对于任意一个正整数$t$满足$a^t\equiv 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^N\equiv a(\mod p)$,本节只介绍$p$为素数的情况。

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

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

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

posted @ 2018-08-05 22:46  iamunstoppable  阅读(280)  评论(0编辑  收藏  举报