A*m+B*n=D问题的数学推导求解

来源:互联网 发布:centos 解压 iso文件 编辑:程序博客网 时间:2024/05/01 13:00

    

       A*m+B*n=D问题的数学推导求解

流浪狗  2006.3

  正整数mn,求mn的最大公约数问题是一个算法入门的题目。但是要求解两个整数AB,使得A*m+B*n=DDm,n的最大公因数。求解最大公约数的问题可以表示如下:

1)            输入正整数m,n

2)            r=m%n;

3)            判断r是否等于0,如果等于0,则结束

4)            m=n;  n=r;转到(2

5)            输出n

  而要求解A*m+B*n=D的问题,令

    a'*m+b'*n=c,

    a*m+b*n=d

在程序运行过程中始终成立,则

1)            输入m,n

2)            a'=b=1,a=b'=0,c=m,d=n;

3)            q=c/d;r=c%d;

4)            判断r是否等于0,如果等于0,则结束

5)            交换值,怎样交换?转向(3

具体怎样交换呢?我们可以通过数学推倒来确定。

已知条件为

  ck1dk,

    dk1rk,

    rk+1=ck+1%dk+1

因为

  a’k*m+b’k*n=ck,

     ak*m+bk*n=dk

所以

  a’k1*m+b’k1*n=ck1dk= ak*m+bk*n

由于a’k1b’k1akbk都是整数,故有

a’k1ak;    b’k1=bk; ……………………………………….(1)

 

  ak1*m+bk1*ndk1rk= ck% dk= ck-q* dk

ak1*m+bk1*n=a’k*m+b’k*n-q*( ak*m+bk*n)

ak1*m+bk1*n=( a’k-q* ak)*m+( b’k-q* bk)

故有

   ak1= a’k-q* ak;    bk1= b’k-q* bk………………………..(2)

由(1)(2)可以得出第5步的具体算法:

 

   c=d; d=r;
   t=a’;
   a’=a;
   a=t-q*a;
   t=b’;
   b’=b;
   b=t-q*b;