辗转相除法的循环不变量证明

 

 

循环不变量:在第2 - 6行的while循环的每次迭代开始时,a,b的最大公因数与A,B的最大公因数相同。

循环不变量的性质:

初始化:

       在循环的第一次迭代前,a = A,b = B,循环不变量显然成立。

保持:

       对于这一性质的证明涉及到辗转相除法的数学原理。要证循环不变量的保持,只需证明a,b的最大公因数等于b,r的最大公因数。要证明这一点,只需证明a,b的因子集与b,r的因子集完全相同。

       根据这一数学原理:

    如果a是任一整数而b是任一大于零的整数,则我们总能找到一整数q,使得a = bq + r,这里r是满足不等式0 <= r <b的一个整数。

 

       显然,可以将某次循环中a,b,r的关系表示如下:a = qb +r.

       假设:u为a,b的任意一个因子,即a = su,b = tu. r = a - qb = su - qtu = (s - qt)u. 这里的s - qt显然为正整数。r可以整除u。故而得证b,r的因子集包含a,b的因子集。

       假设:u为b,r的任意一个因子,即r = su,b = tu。a = qb + r = qtu + su = (s + qt)u. 这里的s + qt显然为正整数。a可以整除u。故而得证a,b的因子集包含b,r的因子集。

       综上,可以证明a,b的因子集与b,r的因子集相等,故而得证。

终止:

        在循环终止时,此时的r = 0,说明:此时a 可以整除b,即b为a,b的最大公因子。即此时的b为A,B的最大公因子。

 

 

 

               

 

posted @ 2020-08-12 09:45  zqybegin  阅读(441)  评论(0编辑  收藏  举报