zoukankan      html  css  js  c++  java
  • 辗转相除法的循环不变量证明

    循环不变量:在第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的最大公因子。

                   

  • 相关阅读:
    别的程序员是怎么读你的简历的
    .NET平台的ORM分析工具
    有关各个版本的Visual Studio(VS)和SQL Server安装的顺序总结
    QQ空间魔力日志大全SduSRZ
    【Python】哈姆雷特字数统计
    【Python】统计
    【Python】koch雪花
    【Python】汉诺塔问题
    【Python】七个数码管年月日
    【Python】圆周率计算
  • 原文地址:https://www.cnblogs.com/zqybegin/p/13488886.html
Copyright © 2011-2022 走看看