数论知识

扩展欧几里得算法

  • 根据裴蜀定理,ax+by=gcd(a,b)ax+by=gcd(a,b)有整数解x,yx,y

    alt

  • 用扩展欧几里得算法,可以在求gcd(a,b)gcd(a,b)的过程中求出一组x0,y0x_0,y_0

    则方程的全部解为

    {x=x0+bgcd(a,b)ky=y0agcd(a,b)kkZ\left\{ \begin{array}{c} x=x_0+\frac{b}{gcd(a,b)}*k\\ y=y_0-\frac{a}{gcd(a,b)}*k\\ k\in \mathbb{Z}\\ \end{array} \right.

二元线性丢番图方程(二元一次不定方程)

  • ax+by=cax+by=c有解的充要条件:

    c%gcd(a,b)=0c \% gcd(a,b) = 0

  • ax+by=gcd(a,b)ax+by=gcd(a,b)的一组解为(x,y)(x^*,y^*)

    ax+by=cax+by=c的一组解为(cgcd(a,b)x,cgcd(a,b)y)(\frac{c}{gcd(a,b)}x^*, \frac{c}{gcd(a,b)}y^*)

    全部解为

    {x=cgcd(a,b)x+bgcd(a,b)ky=cgcd(a,b)yagcd(a,b)kkZ\left\{ \begin{array}{c} x=\frac{c}{gcd(a,b)}x^*+\frac{b}{gcd(a,b)}*k\\ y=\frac{c}{gcd(a,b)}y^*-\frac{a}{gcd(a,b)}*k\\ k\in \mathbb{Z}\\\end{array} \right.

一元线性同余方程

  • 形如

    axb(modm)ax\equiv b\left( mod\,\,m \right)

    称为一元线性同余方程,与二元线性丢番图方程类似

  • 一元线性同余方程组可以转化为

    ax+my=bax+my=b

    则线性同余方程有解的充要条件为

    b%gcd(a,m)=0b\%gcd(a,m)=0

  • 根据二元线性丢番图方程的解的公式,解线性同余方程得

    x=bgcd(a,m)x+mgcd(a,m)kxax+my=gcd(a,m)k=0,1,...,gcd(a,m)1x=\frac{b}{gcd(a,m)}x^*+\frac{m}{gcd(a,m)}*k \\ 其中x^*是ax+my=gcd(a,m)的一个解 \\ k=0,1,...,gcd(a,m)-1

欧拉定理

  • gcd(a,n)=1gcd(a,n)=1时,aφ(n)1(mod n)a^{\varphi(n)} \equiv 1 (mod\ n)
  • 当n是质数时,φ(n)=n1\varphi(n)=n-1,所以an11(mod n)a^{n-1} \equiv 1 (mod\ n)

证明:

记号:a1,a2,...,aφ(n)1nna_1,a_2,...,a_{\varphi(n)}是1-n中与n互质的数

  • step1:由于aia_i和n互质,aa和n互质,所以aa1aa2...aaφ(n)naa_1、aa_2、...、aa_{\varphi(n)}与n互质

  • step2:假设aaiaaj(mod n)aa_i \equiv aa_j (mod\ n),则a(aiaj)0(mod n).a(a_i-a_j)\equiv 0(mod\ n).

    因为gcd(a,n)=1gcd(a,n)=1,所以aiaj0(mod n)aiaj(mod n)a_i-a_j \equiv 0 (mod\ n),即a_i \equiv a_j(mod \ n)

    因为ai≢aj(mod n),a_i \not \equiv a_j (mod\ n),所以aaiaajaa_i和aa_j互不相同

    所以{aai}{ai}\{aa_i\}和\{a_i\}都能表示nn的简化剩余系

    所以aφ(n)a1a2...aφ(n)a1a2...aφ(n)(mod n)a^{\varphi(n)}a_1a_2...a_{\varphi(n)} \equiv a_1a_2...a_{\varphi(n)} (mod\ n)

    aφ(n)1(mod n)a^{\varphi(n)} \equiv 1 (mod\ n)

费马小定理:

当n是质数时的欧拉定理即为费马小定理

逆元

  • 定义:ax1(mod m)ax \equiv 1(mod\ m)xxaa的模mm逆元。

    通常情况下,逆元指的是x的最小正整数解,则问题转化为求x的最小正整数解

  • 方程有解的充要条件:gcd(a,m)=1gcd(a,m)=1

  • 求解方法:

    • 扩展欧几里得算法

      原方程转化为ax+my=1=gcd(a,m)ax+my=1=gcd(a,m)

      利用扩展欧几里得算法求出x=x0+mgcd(a,m)k=x0+mkx=x_0+\frac{m}{gcd(a,m)}*k=x_0+m*k

      则x的最小正整数解为(x0%m+m)%m(x_0\%m+m)\%m

    • 费马小定理

      mm是质数时,aam21(mod m)a*a^{m-2} \equiv1(mod\ m)

      所以am2%ma^{m-2}\%m就是aa的逆元

  • 应用

    b%a=0b\%a=0的条件下,计算(b/a)%m.(b/a)\%m.若b很大,则可以通过aa的逆元来计算

    (b/a)%m(b/a)\%m化为(bx)%m=((b%m)(x%m))%m(bx)\%m=((b\%m)*(x\%m))\%m来计算