首页 > 代码库 > 算法竞赛中数论理论浅析

算法竞赛中数论理论浅析

一、基本概念                                             

  带余除法(division algorithm,除法定理):a∈Z,d∈Z*,有唯一的整数 q 和 r,并且0≤r<d0,满足 a= d q+r。q 称为商,r  称为余数。通俗说法:整数除以正整数得到唯一的商(quotient)和余数(residue)。

   整除(divide exactly):称 a 整除 b ,当整数 a 除以非零整数 b ,商为整数,且余数为零, 我们就说a能被b整除(或说b能整除a),记作 b|a。b 称为 a 的约数(因数,common divisor)。  

  最大公约数(great common divisor):两个不同时为零的整数a与b的公约数中最大的称为其最大公约数,记作d=gcd(a,b)。

  丟翻图方程:整系数多项式方程的统称。

二、gcd欧几里得算法

  GCD递归定理:对任意非负整数a和任意正整数b,gcd(a,b) = gcd(b,a mod b) 。证明见附录。

三、裴属定理

   裴属定理:对任意整数a,b,关于变量x,y的线性丟翻图方程 ax+by=m(裴属等式),有整数解当且仅当 m 是 d=gcd(a,b)的整数倍。证明见附录。

   

 

 

附录、

GCD递归定理的证明

  gcd(a,b) = gcd(b,a mod b) ,先证gcd(a,b)|gcd(b,a mod b),设d=gcd(a,b),有d|a且d|b。令

  r=(a mod b),则

  r=a-qb,q为a/b向下取整。

  (a mod b)是 a 与 b 的线性组合,所以 d|(a mod b)。

  d|b,d|(a mod b),所以,d|gcd(b,a mod b)。

  反过来证gcd(b,a mod b)|gcd(a,b),方法相同,不再赘述,

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

裴属定理的证明

  在 ax+by=m 中,

  1. ab=0,不失一般性,令

    b=0,则

    ax=m。

     d=gcd(a,0)=a ,得

    dx=m

    它有解当且仅当 m 是 d 的整数倍。

  2. ab≠0,

    设A是a,b的线性组合,即A={xa+yb| x,y∈Z},

    令d0是A中最小正元素,即d0=min{x| x∈A∩Z*}= xa+ yb

    下面将首先证明 d0= gcd(a,b),进而构造裴属等式一组解,从而证明了命题的

  充分性

    设 p 是 A 中任意一个正数,p=x1a+ y1b

    我们可以证明 d0|p

      考虑p对d0的带余除法,

      p= d0q+r,0≤r<d0,则

      r  = p - d0q 

        =x1a+y1b-( x0a+y0b )q 

        =(x1-qx0)a +(y1-qy0)b ∈A

      因为d0是A中最小的正元素,所以r只能等于0,即d0|p

      d是A中正整数的公约数。

      假设d∈A且d是A中任意正整数的最大公约数,d|d0,又d0|d,所以d0=d。特别地

      d0 =gcd(|a|,|b|)

      =gcd(a,b)

   设m=m0d0,d0=gcd(a,b)= xa+ yb,

    m0( xa+ yb)=m

   我们构造了裴属等式的一组可行解 x=m0x0y=m0y0

   实际上解可以有有无穷多组:x=(m0x0+kb/d0), y=(m0y0-ka/d0), k∈Z

 必要性如果xa+yb=m成立,那么m∈A,d0||m|,d0|m