数论知识

数论知识

扩展欧几里得算法

  • 根据裴蜀定理,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来计算

全部评论

相关推荐

湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
身边有人上海、深圳 6、7k 都去了,真就带薪上班了。
小浪_coder:深圳除了一些计算机,UI设计,金融类等一些可以月薪过万的工作之外, 认识很多朋友做运营,营销,文员的工作, 月薪基本都在4-6K左右,还有大把人在干
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务