数论学习总结《一》

1.整数分解定理,即:d=p1^r1*p2^r2...pk^rk (pi为素数)

   2.同余:

   若a mod c==b mod c,记作 a b (mod c).

   性质:

       (1).a+d ≡ b+d (mod c)

       (2).a*d ≡ b*d (mod c)

       (3).a/d ≡ b/d (mod c) (d|a&&d|b&&gcd(d,c)==1)

       (4).a^n ≡ b^n (mod c)

3.欧几里得算法:

   gcd(a,b)=gcd(b,a mod b).

   证:

     gcd(a,b)=gcd(b,a-b),因为若a,b有最大公约数d,则a=k1*d,b=d2*d,则a-b=(k1-k2)*d也为d的倍数。

     而 mod 相当于做多次减法。

   引理:gcd(a,b)*lcm(a,b)=a*b;

   证:

   由整数分解定理得:若a=p1^r1*p2^r2...pk^rk,b=p1^m1*p2^m2...pk^mk;

   则gcd(a,b)=p1^min(r1,m1)*p2^min(r2,m2)...pk^min(rk,mk)

     lcm(a,b)=p1^max(r1,m1)*p2^max(r2,m2)...pk^max(rk,mk)

   另一种gcd:
           若a为偶数,b为偶数,则gcd(a,b)=2*gcd(a/2,b/2)

        若a为奇数,b为奇数,则gcd(a,b)=gcd(b,a-b)

        若a为奇数,b为偶数,则gcd(a,b)=gcd(a,b/2)

        若a为偶数,b为奇数,则gcd(a,b)=gcd(a/2,b)

4.扩展欧几里得

   背景:用于求形如 ax+by=c 的不定方程的解

   证:

     首先可以证明c一定为k*gcd(a,b),否则无解。

     下面说明如何在gcd中求出x,y

      x1*a+y1*b=gcd(a,b)

      x2*b+y2*(a%b)=gcd(a,b)

      可得:x1*a+y1*b=x2*b+y2*(a%b)

      整理可得:x1*a+y1*b=y2*a+(x2-y2*a/b)*b

      于是x1=y2,y1=x2-y2*(a/b)

   代码:

void exgcd(long long a,long long b,long long &x,long long &y,long long &d)
{
    if(b==0) {
        x=1;y=0;d=a;
        return;
    }
    exgcd(b,a%b,y,x,d);
    y-=x*(a/b);
    return;
}


 

用途:

     (1).求解不定方程

     (2).模线性方程组

         形如:

         x mod k1=r1

         x mod k2=r2

         ...

         x mod km=rm

         我们的想法是:将 x mod ki=ri 转换成x=p*ki+ri,将 x mod kj=rj转换成x=q*kj+rj

         整理得:p*ki+ri=q*kj+rj

         可得:p*ki-q*kj=rj-ri

         接下来用扩展欧几里得求出一组p,q,代入可得x,设为x0

         此时x0为这两个方程的通解,然后就可以将两方程合并,得 x mod lcm(ki,kj)=x0

         如此循环可得最终解

     (3).求逆元

         定义:若(a*b) mod p=1,则称a,b互为关于p的逆元

         用途:(a/b) mod p=(a*k) mod p (k为b的逆元)

         证:http://blog.sina.com.cn/s/blog_7c4c33190100s48a.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值