zoukankan      html  css  js  c++  java
  • 最大公约数的欧几里德[辗转相除]算法及其扩展

    欧几里德算法描述:

    E1.[求余数]

           以n除m并令r为所得余数。(我们将有0 ≤ r ≤ n。)

    E2[余数为0?]

           若r=0,算法结束,n即为答案。

    E3[减少]

           置m←n, n←r,并返回步骤E1.

    其原理依赖于下面的定理

    gcd(a, b) = gcd(b, a mod b)

     证明:

    a可以表示成a = kb + r,则r = a mod b

    假设d是a, b的一个公约数,则有

    d | a, d | b,而r = a - kb,因此d | r

    因此d是(b, a mod b)的公约数

     假设d 是(b,a mod b)的公约数,则

     d | b , d |r ,但是a = kb +r

     因此d也是(a,b)的公约数

     因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证。

    欧几里得算法的C语言表达:


     

    欧几里得算法的改进(避免a、b之间的交换):

    F1.[余数m / n]

           以n除m并令m是余数。

    F2[它为0?]

           如果m = 0,则此算法以n为答案而终止。

    F3[余数n / m]

           以m除n并令n为余数。

    F4[它为0?]

    如果n = 0, 则算法以答案m为终止;否则返回步骤F1。

    实际上是通过提前完成下一次的取余来弥补交换的过程。

    欧几里得改进算法的C语言表达:


     

    另外:

    GCD (greatest common divisor 或者 highest common factor )

  • 相关阅读:
    网站术语
    移动web开发入门
    Bootstrap研究3基础html元素
    我所理解的jQuery(3)jQuery的构建
    你好,2011
    Bootstrap研究0概述
    Bootstrap研究2布局系统杂记
    我所理解的jQuery(2)谈jQuery的整体设计,驳"侵入性太强"
    winxp等操作系统下数据库文件 迁移到 win7下,附加时发生Error: 5123 的解决方法
    Bootstrap研究1精巧的网格布局系统
  • 原文地址:https://www.cnblogs.com/johnpher/p/2570620.html
Copyright © 2011-2022 走看看