欢迎光临散文网 会员登陆 & 注册

辗转相除法的证明

2022-02-01 17:54 作者:ISEKAI  | 我要投稿


我们用辗转相除法的递归形式:

    int f(int m,int n)

    {

    int r=m%n;

    if(r==0) return n;

    else return f(n,r);

    }

证明算法逻辑的正确性和有穷性,最终算法得到证明。

逻辑正确性涉及到两处return语句。

    第一处return语句的正确性证明见图:右栏1~8排

    第二处return语句的正确性证明见图:右栏剩余部分

算法的有穷性证明见左栏。(证明的前提是存在 x∈[1,min{m,n}]∩N 是m,n的最大公因数,而输入的m,n是自然数保证了这一前提)

PS:根据证明我们可以发现:对于算法来说,m,n的大小相对关系不影响算法(即传入参数时可以有m<n)

治好了多年的脊椎病

算法证明很简单,但是复杂度的推导具有挑战性。

辗转相除法的证明的评论 (共 条)

分享到微博请遵守国家法律