整除性(divisible):

引入了代表整除性。 m\n (m|n) 表示m整除n。注意这里的整除。表示的是n = km(k为整数)。

在整除性这里。m必须是个正数。也许你可以描述n 是 m 的k倍。这种描述中m完全可以是任何数。而在整除性中的表达m整除n,规定了m必须是个正数。而0没有限制。

 


 

那么回答以下问题:

1:什么是0的倍数?

2:什么能被0整除?

3:什么能被-1整除?

4:什么能被1整除?

5:2Pi能被Pi整除吗?

6: 2Pi能被2整除吗?

答案分别是:

1:0

2:没有任何数能被0整除。(因为m>0而在这里m=0)

3:同上没有任何数能被-1整除。也就是-1不能整除任何数(严格意义上来讲)

4:任何整数。

5:可以。根据整除性的定义 m>0  n/m 是一个整数即可。n m 是任何实数(m>0)

6:不可以。Pi是3.14... 是个无限不循环小数非整数。

 


 

最大公因子(greatest common divisor):

用符号 gcd(n,m)表示。也就是所谓的最大公约数了。

首要的就是解决求两个数的最大公约数的问题了。

http://www.cnblogs.com/Milkor/p4379621.html

根据上面的链接里的方法 基本上可以完美解决最大公约数的问题。

接下来探讨扩展欧几里德的使用和原理

 


 

扩展欧几里德(extended Euclidean):

描述:必然存在n',m'使得 n'n+m'm=gcd(n,m) 成立。

证明这个定理有关乎贝祖定理(即裴蜀定理)。要搜的话,最好搜裴蜀定理,有更多的资料。

 

裴蜀定理(Bézout's identity):

描述:对于nn'+mm'=d 这个方程有整数对解n',m',那么d一定是gcd(n,m)的倍数。(并且有解时,整数解对有无限对)

证明: 

  分三步证明:

    证明1:证明有正整数对解n'm'的时候d一定是最小d(简称d0)的倍数。(这个d0我们还不能说是gcd(n.m)).

    证明2: 证明nn'+mm'=gcd(n,m)有正整数解对n'm'.

    证明3: 证明d0(最小d,之后不赘述)即位gcd(n,m).

 

我尽量详细描述。后有图版的。感谢贴出此图的吧主(吧主名字忘记了,抱歉,惭愧)。找了很久很久。

声明:能够满足nn'+mm'=d有正整数对解的值,这个d值是好值。

证明1:证明有正整数对解n'm'的时候d一定是最小d(简称d0)的倍数。(这个d0我们还不能说是gcd(n.m)).

    设d0 = nn'+mm' ,d0是最小好值。    ①

       d = nn'+mm' ,   d是任意好值。  ②

     要证明1,即证明d=kd0(k是正整数) 即d是d0的倍数

     带余除法 d/d0 -> d = kd0+r ③

      即要证明r = 0

     如果r>0 (r不可能<0)

      r = d-kd0 =  nn'+mm' - k(nn''+mm'') 由于  式子①和式子②中的m'n'是不同的 所以前者改用n'' m''来标记

         =  (n'-kn'')n + (m'-m'')m 

    整理得 r =  (n'-kn'')n + (m'-m'')m

           其中n'-kn'' 和 (m'-m'')均为整数,所以r应该是一个好值。但是如果r是一个好值,然而根据③有r<d0。所以这和d0是最小好值是矛盾的。

    所以r = 0.

   所以d = kd0 证毕。

 

证明2:nn'+mm'=gcd(n,m)有正整数解对n'm'.

  利用带余除法: (把余数当做除数,原因后有,符合欧几里得。) 

  r1 = n  -  k1 m  ①

  r2 = m  - k2 r1  ②

  r3 = r1  - k3 r2  ③

  r4 = r2  - k4 r3  ④

  r5 = r3  - k5 r4  ⑤

  ......

  r(n-1) = r(n-3) - k(n) r(n-2)  ⑥

  r(n) = r(n-2) - k(n) r(n-1)  ⑦

 

  图上利用数学归纳法证明对于所有的n的不同取值,存在u,v。使得r(n) = up+vq(图上的比较全,严谨)。 回忆作者(似乎是他的学生)在旁边的注解。数学归纳法就是先打好地板。然后确立好你能从n层走上n+1层。那么你就能从地板上走到天际。

  我在这里就不用数学归纳法了。我直接从头推到尾。(个人见解。)

  那么复合①②式子:

  r1 = n  - k1 m    ①

  r2 = m - k2 r1    ② 

  ① 代入 ② 

  r2  = (1+k1) m - k2 n  (形式上和原来的式子一样) 所以可以设该式为 r2 = s m -  tn。

  所以成立。

  那么继续 r2 = s m -  tn。复合 r3 = r1  - k3 r2  ③

  r3 = r1 - k3 (s m - tn)  代入式 ①

  r3 = n - k1m - k3(s m - t n)

  r3 = (1 + k3t) n - (k1+k3s) m (形式上和原来的式子一样) 所以可以设该式为 r3 = s m -  tn。   (顺序无所谓 只要符合贝组等式,即原等式的形式)

   由此一直递推。可以有

   r(n-1)= sm+tn   

  之后你可以手写一下或者思考一下证明欧几里得的过程 到最后一定会有余数 r = 0   (欧几里得的最后终点是gcd(0,n) = n)

  假设 ⑦ 达到这种情况。即r(n) = 0.

  gcd(n,m) = gcd(m,r1) = gcd(r1,r2) = gcd(r2,r3)... = gcd(r(n-1),r(n)) = gcd(r(n-1),0) = r(n-1).

  所以 gcd(n,m) = r(n-1) = sm + tn = nn'+mm'.证毕。

 

证明3:证明d0(最小d,之后不赘述)即为gcd(n,m).

  根据证明2。gcd(n,m) = nn'+mm'   其中 gcd(n,m)是好值

  d0是最小好值。根据证明1  gcd(n,m)|d0。

  设 c = gcd(n,m) / d0 (我们目的要证明c = 1)

  对于  d0 = nn'+mm'

  有 1 = n' (n/d0) + m' (m/d0) 

  其中 c|(n/d0) 把c = gcd(n,m) / d0 代入就可得。 c|(m/d0) .

  那么 c|1

  那么 c = 1.证毕

求解m',n'

现在让我们求nn'+mm'=gcd(n,m)的一组特解n',m'.

求解过程:

  设n>m

  n%m = r -> n = km+r -> r = n-km.

  另有 rr'' + mm'' = gcd(r,m) (这个m还是原来的m 对应的m''不是m',注意这个'另'字)

  由欧几里得定理得:

    rr'' + mm'' = gcd(r,m) = gcd(n,m)

     (n-km) r'' + mm'' = gcd(n,m)

     nr'' - kmr'' + mm'' = gcd(n,m)

     nr'' + m(m''-kr'') = gcd(n,m)

    所以 n' = r''            m' = m''- kr'' 

  那么我们只要求出r'' 和 m'' 就可以得到 n'   m'

      那么对 rr'' + mm''  = gcd(n,m) 做同上的处理。  就能形成递推关系。 你可以这样考虑 n' m‘ 需要 r'' 和 m''   而 r'' 和 m'' 需要  r''' 和 m'''......

    假如我们知道最终结果的 r''''''''''' 和 m''''''''''   (标点数不知多少,但是是有限的)那么我们可以一直向上推出  n' m' 交给计算机处理吧。递推关系。

  最后  r''''''''''' = 1 m''''''''''' = 0

  可以有证明:

  一直取模。最后余数会=0,且另外一个参数的值  = gcd(n,m)(因为gcd(0,a) = a) 所以另外一个解值为1 这个已经在证明裴蜀定理得第2条证明的时候 已经使用过了。所以不再赘述。

 

  递推关系有了。结尾判断有了。code.

 

 int x,y;
void EXGCD(int n,int m)
{
    if(m==0)
    {
        x = 1;
        y = 0;
        return;
    }
    EXGCD(m,n%m);
    int t = x;
    x = y;
    y = t - n/m*y; 
}

// nx + my = gcd(n.m) 
// 所以要控制一下输出!
EXGCD 扩展欧几里德

相关文章:

  • 2022-02-04
  • 2022-12-23
  • 2021-08-26
  • 2021-05-23
  • 2021-07-07
  • 2022-12-23
  • 2021-07-01
  • 2021-06-13
猜你喜欢
  • 2021-12-26
  • 2021-05-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-16
  • 2022-12-23
相关资源
相似解决方案