Loading

提高组数论速查

同余与剩余系

设有整数 \(n_1,n_2,m\) 满足 \(\exist q_1,q_2,r \in \Z,n_1=mq_1+r,n_2=mq_2+r\),则称 \(n_1,n_2\)\(m\) 同余,记作 \(n_1 \equiv n_2 \pmod m\)

称所有模 \(m\) 同余(设为 \(r\))的 \(n\) 组成的集合为模 \(m\) 的一个剩余类,记作 \(C_r\)

设有 \(m\) 个整数构成的集合 \(A\) 满足 \(a_1,\dots,a_m\)\(m\) 互不同余(即从每个剩余类中各取一个数),则称 \(A\) 为模 \(m\) 的一个完全剩余系。

容易证明一个满足上面条件的集合至多有 \(m\) 个数。

我们可以再化简一下,只取与 \(m\) 互质的数,这样就得到了模 \(m\) 的一个简化剩余系。简化剩余系的大小为 \(\varphi(m)\)

欧几里得算法与裴蜀定理

欧几里得算法(辗转相除法):\(\gcd(a,b)=\gcd(b,a\bmod b)(a,b\in\Z)\)

证:设 \(a=qb+r,\gcd(b,r)=d\)

由于 \(\gcd(b,a\bmod b)=\gcd(b,r)\),则有 \(d|r,d|b\),则可以推出 \(d|a\),则有 \(d|\gcd(a,b)\)

\(k=\gcd(a,b)\),则 \(k|a-qb=r\),说明 \(k|\gcd(b,r)\)

因此,\(\gcd(a,b)|\gcd(b,a\bmod b),\gcd(b,a\bmod b)|\gcd(a,b) \Rightarrow \gcd(a,b)=\gcd(b,a\bmod b)\)

裴蜀定理:若有 \(a,b,m\in\Z\)\(a,b\) 不全为 0),则存在一组解 \(x,y\in\Z\) 使得 \(ax+by=m\) 的充要条件是 \(\gcd(a,b)|m\),且若有解则必有无穷多组解。

证(拓展欧几里得算法):

必要性显然,下证充分性:

不妨假设 \(a,b \ge 0\),因为正负号的不同可以简单地通过 \(x,y\) 的正负性来改变。

同时,只要证明 \(ax+by=\gcd(a,b)\) 即可,因为对 \(x,y\) 扩大若干倍即可得到 \(m\)

那么两边同时除以 \(\gcd(a,b)\),即 \(a'x+b'y=1\)

我们在求 \(\gcd(a',b')\) 的时候是怎么做的?后几步单独拿出来看(不妨设此时的两个求公约数的数分别为 \(u,v\)):

\[\gcd(a',b')=\gcd(u,v)=\gcd(v,1)=\gcd(1,0)=1 \]

发现出现了一个 \(u=qv+1\),移项得到 \(u-qv=1\)。那么现在就得到了一组对于 \(u,v\) 的解。

能不能从 \(u,v\) 推到 \(a',b'\) 呢?答案是可以的。

假设我们上一级求的是 \(\gcd(\lambda u+v,u)=\gcd(u,v)\),已知 \(ux_0+vy_0=1\),要求 \((\lambda u+v)x_1+uy_1\) 的解。

构造:取 \(x_1=y_0,y_1=x_0-\lambda y_0\),得到

\[\begin{aligned} &(\lambda u+v)x_1+uy_1 \\ =&(\lambda u+v)y_0+u(x_0-\lambda y_0) \\ =& \lambda uy_0+vy_0+ux_0-\lambda uy_0 \\ =&ux_0+vy_0=1 \end{aligned} \]

逐层推上去即可,这样不仅证明了该定理,还求出了一组解。

有了特解后,其通解为小学奥数内容,这里不再赘述。

int exgcd(int a, int b, int &x, int &y, int z = 1) {
    if (!b) {
        if (z % a) x = 0, y = 0;
        else x = z / a, y = 0;
        return a;
    }
    int d = exgcd(b, a % b, x, y, z);
    int xx = y, yy = x - y * (a / b);
    x = xx, y = yy;
    return d;
}

利用数学归纳法也容易将裴蜀定理推广到 \(n\) 个数的情况:

\(\sum a_ix_i=m\) 有整数解当且仅当 \(\gcd(a_1,a_2,\dots,a_n) | m\)

证:

  1. \(n=2\) 时显然成立。

  2. 假设 \(2 \le n \le k\) 时成立,下证 \(n = k + 1\) 时成立。

    因为 \(\le k\) 时成立,因此 \(\sum_{i=1}^k a_ix_i=\lambda\gcd(a_1,\dots,a_k)\)

    原式变为 \(\lambda\gcd(a_1,\dots,a_k)+a_{k+1}x_{k+1}=m\) 有解,由 \(n=2\) 时知有解当且仅当 \(\gcd(\gcd(a_1,\dots,a_k),a_{k+1})=\gcd(a_1,\dots,a_{k+1})|m\)

证毕。

欧拉定理与费马小定理

欧拉定理(数论):若 \(\gcd(a,m)=1\),则 \(a^{\varphi(m)} \equiv 1 \pmod m\)

证:

设模 \(m\) 的一个简化剩余系为 \(r_1,\dots,r_{\varphi(m)}\),则由简化剩余系的性质 \(ar_1,\dots,ar_{\varphi(m)}\) 同样为模 \(m\) 的简化剩余系。

那么就有

\[\prod r \equiv \prod ar \equiv a^{\varphi(m)} \prod r \pmod m \\ a^{\varphi(m)} \equiv 1 \pmod m \]

\(m\) 为一个质数 \(p\) 时,就得到了费马小定理。

费马小定理: \(a^p \equiv a \pmod p\)\(p\) 是质数。

具体到 OI 上,可以总结出一个 拓展欧拉定理 ,用来处理模意义下的指数:

\[a^b \equiv \begin{cases} a^{b \bmod \varphi(m)} & \gcd(a,m)=1; \\ a^b & \gcd(a,m) \neq 1, b < \varphi(m); \\ a^{b\bmod \varphi(m)+\varphi(m)} & \gcd(a,m) \ne 1,b \ge \varphi(m). \end{cases} \pmod m \]

仅证第三条:

我们对 \(m\) 分解质因数,设为 \(p_1^{\alpha_1}\dots p_k^{\alpha_k}\)。考虑对每一个 \(p^\alpha\) 分别证明:若每一个都成立,那么这几个互质的模数乘起来必然成立。

  1. \(\gcd(a,p^\alpha)=1\) 时:

    \[a^b\equiv a^{\varphi(m)\cdot\lfloor\frac{b}{\varphi(m)}\rfloor+b\bmod\varphi(m)} \equiv [a^{\varphi(m)}]^{\lfloor\frac{b}{\varphi(m)}\rfloor}\cdot a^{b\bmod\varphi(m)} \pmod{p^\alpha} \]

    注意到 \(\varphi\) 是积性函数,因此 \(\varphi(p^\alpha) | \varphi(m)\)
    所以

    \[a^b \equiv a^{b \bmod \varphi(m)} \equiv a^{b \bmod \varphi(m)+\varphi(m)} \pmod{p^\alpha} \]

  2. \(\gcd(a,p^\alpha) \neq 1\) 时:

    因为 \(p\) 是质数,所以 \(p|a\)。又由前提有 \(b \ge \varphi(m)\),因此 \(b \ge \varphi(m) \ge \varphi(p^\alpha)=p^\alpha-p^{\alpha-1}=p^{\alpha-1}(p-1) \ge \alpha\)

    那么有

    \[a^b \equiv a^{b \bmod \varphi(m)+\varphi(m)} \equiv0 \pmod {p^\alpha} \]

最终合并即可。

或者参考 OI Wiki 上的证法:欧拉定理 & 费马小定理 - OI Wiki

乘法逆元

是否可以将模拓展到有理数域上呢?答案是可以的。

考虑下面一个问题:

设有正整数 \(a,m\),求满足 \(a \cdot b \equiv 1 \pmod m\) 的解 \(b\)

我们称 \(b\)\(a\)\(m\) 意义下的乘法逆元,记作 \(a^{-1} \pmod m\)(或者说环 \(\Z_m\) 上的乘法逆元)。

其实就是相当于求解 \(ax-my=1\)\(x\)

由裴蜀定理,当 \(\gcd(a,m) > 1\) 时无解,即不存在逆元。

否则就可以用拓展欧几里得求出 \(x\)

从另一个角度想,如果存在逆元,由欧拉定理,有

\[\begin{aligned} a^{\varphi(m)} &\equiv 1 &\pmod m \\ a^{\varphi(m) - 1} \cdot a &\equiv 1 &\pmod m \\ b &\equiv a^{\varphi(m) - 1} &\pmod m \end{aligned} \]

快速幂即可求出。

如果要求 \(n\) 个数的逆元呢?

求前 \(n\) 个数的那个做法多少有点麻烦,个人更喜欢这种:

考虑求任意 \(n\) 个数的逆元,先随便给个顺序,然后求个前缀积 \(s_1,\dots,s_n\)

之后利用上述方法求 \(s_n\) 的逆元。

紧接着倒序一个一个乘回去,\(s_n^{-1}\cdot a_n=s_{n-1}^{-1}\),这样线性求出了每个前缀积的逆元。

之后再顺序乘过去,\(s_n^{-1}\cdot s_{n-1}=a_{n}^{-1}\)

时间复杂度 \(O(n)\),相比直接线性扫的多了点常数,但是好想。

这里也直接给出传统做法:

inv[1] = 1;
for (int i = 2; i <= n; i++) {
    inv[i] = (p - p / i) * inv[p % i] % p;
}

中国剩余定理

求解同余方程 \(x \equiv a_i \pmod {m_i}\),其中 \(m_i,m_j\) 两两互质。

\(M=\prod m,M_i=\frac{M}{m_i}\),再求出 \(M_i\) 在模 \(m_i\) 意义下的乘法逆元 \(M_i^{-1}\) 则该同余方程模 \(M\) 下的唯一解为

\[x \equiv \sum_{i=1}^n a_iM_iM_i^{-1} \pmod M \]

证:

先证存在性:

首先由于 \(m\) 两两互质,因此 \(M_i=\frac{M}{m_i}\)\(m_i\) 互质,因此必定存在逆元 \(M_i^{-1}\)

而在 \(\bmod m_i\) 意义下 \(M_iM_i^{-1} \equiv 1 \pmod{m_i}\),因此 \(a_iM_iM_i^{-1} \equiv a_i \pmod{m_i}\)

又因为 \(m_j | M_i,i \neq j\),所以 \(a_iM_iM_i^{-1} \equiv 0 \pmod{m_j}\)

唯一性利用数学归纳法不难证明。

如果模数不两两互质呢?这个时候就要使用拓展中国剩余定理

考虑取出其中一对不互质的方程,假设为

\[\begin{cases} x \equiv a \pmod m \\ x \equiv b \pmod n \end{cases} \]

其中 \(\gcd(m,n) > 1\)。考虑写成等式的形式:

\[\begin{cases} x=\lambda m+a \\ x = \mu n + b \end{cases} \Rightarrow\lambda m - \mu n=b-a \]

即求一个不定方程的解,使用裴蜀定理即可判定是否有解,并求出一组特解。

然后将两个方程合并:

\[\begin{aligned} x&=\lambda m+a \\ \lambda &=\lambda_0+k \cdot \frac{n}{\gcd(m,n)} \\ x&=m(\lambda_0+k \cdot \frac{n}{\gcd(m,n)})+a \\ &=m\lambda_0+k\cdot \text{lcm}(m,n)+a \\ \Leftrightarrow x&\equiv m\lambda_0+a\pmod{\text{lcm}(m,n)} \end{aligned} \]

其中 \(k \in \Z\)\(\lambda_0\) 是通过 exgcd 求出的通解。

两两合并方程组即可。

威尔逊定理

对于任意质数 \(p\),有 \((p-1)! \equiv -1 \pmod p\)

证:

不难发现 \(1,\dots,p-1\) 里每一个数都与 \(p\) 互质。

引理:若 \(a,p\) 互质,则 \(a\) 在模 \(p\) 意义下的逆元 \(a^{-1}\) 存在且唯一。

存在性显然,下证唯一:

假设有两个整数 \(b_1,b_2\) 满足

\[ab_1 \equiv1 \pmod p \\ ab_2 \equiv 1 \pmod p \]

那么

\[\begin{aligned} ab_1-ab_2 &\equiv 0 &\pmod p \\ b_1-b_2 &\equiv 0 &\pmod p \\ b_1 &\equiv b_2 &\pmod p \end{aligned} \]

回到原问题,由于每个数的逆元在 \(\{1,\dots,p-1\}\) 中唯一确定,因此互为逆元的两个数可以直接消掉,仅需考虑逆元是自己本身的数。

解方程 \(x^2 \equiv 1 \pmod p \ (1 \le x \le p - 1)\),解得 \(x_1=1,x_2=p-1\)

因此 \((p-1)! \equiv 1 \times (p-1) \equiv p - 1 \equiv -1 \pmod p\)

卢卡斯定理

\[\binom{n}{m} \equiv \binom{n \bmod p}{m \bmod p} \times \binom{\lfloor\frac{n}{p}\rfloor}{\lfloor\frac{m}{p}\rfloor} \pmod p \]

人话翻译:原组合数等于将 \(n,m\) 表示成 \(p\) 进制后每一位分别求组合数并相乘。

关于证明:感觉可以仿照拓展卢卡斯用 CRT 证,但是我不会。

posted @ 2022-10-31 19:32  LewisLi  阅读(87)  评论(0)    收藏  举报