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


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

                   

  • 相关阅读:
    Windows系统自带工具的 cmd 命令
    阿里巴巴集团2016校园招聘-Python工程师笔试题(附加题+部分答案)
    小米3刷机说明
    第3章 常用运算符
    第1章Java入门体验
    jQuery表单验证案例
    jQuery超链接提示,提示跟随鼠标动
    [转载]我的Java后端书架 (2016年暖冬4.0版)
    PHP代码重用与函数编写
    PHP数组操作
  • 原文地址:https://www.cnblogs.com/zqybegin/p/13488886.html
Copyright © 2020-2023  润新知