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

    

       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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值