zoukankan      html  css  js  c++  java
  • 欧几里得算法

    辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。

    算法描述

    用辗转相除法确定两个正整数 a 和 b(a≥b) 的最大公因数 :
    当  时,  否则  递归或循环运算得出结果。
    算法流程图如下:
     
     
     
    Java实现
    /**
         * 欧几里得算法
         * @param m 较大数
         * @param n 较小数
         * @return
         */
        public static int gcd(int m, int n) {
            while (true) {
                if ((m = m % n) == 0)
                    return n;
                if ((n = n % m) == 0)
                    return m;
            }
        }

    这里只是作为递归的调用了解一下。

  • 相关阅读:
    bfs,队列
    Wannafly挑战赛22 A计数器(裴蜀定理 gcd)
    素数筛模板
    HDU
    HDU
    控制精度-----直接截取,不需四舍五入
    jstl下载与配置
    B. Treasure Hunt
    动态数组vector
    Manacher算法
  • 原文地址:https://www.cnblogs.com/zeussbook/p/11198365.html
Copyright © 2011-2022 走看看