zoukankan      html  css  js  c++  java
  • 辗转相减法求最大公约数

    什么是辗转相减法

    我们小学(应该是小学吧)学过求最大公约数的方法是辗转相除法,其实还有另一种方法,只是12年义务教育都没有提到过,那就是辗转相减法。它的基本原理是:大数减小数,直到两数相等时,即为最大公约数。

    举个栗子

    a        b       |a - b|

    88    156

    88    68     156 - 88

    20    68      88 - 68

    20    48      68 - 20

    20    28      48 - 20

    20    8        28 - 20

    12    8        20 - 8

    4      8        12 - 8

    4      4         8 - 4

    a == b  =>  4为最大公约数

    递归实现

    int GCD(int a, int b)
    {
        if (a == b)
            return a;
        else if (a > b)
            return GCD (a, b);
        else
            return GCD(b, a);
    }

     迭代实现

    int GCD(int a, int b)
    {
        while(a == b)
        {
            if (a > b) a -= b;
            else b -= a;
        }
        return a;
    }

     辗转相减法一来比较好理解,二来也比较好写程序,居家旅行必选方法!

  • 相关阅读:
    第三个Sprint冲刺第三天
    回答第1-17章
    阅读第13-17章
    阅读第10、11、12章
    阅读第8,9,10章
    作业5.2 5.3
    四则运算 测试与封装 5.1
    阅读第5-7章
    阅读1-5章
    我给队友做的汉堡包
  • 原文地址:https://www.cnblogs.com/HuangWj/p/11261870.html
Copyright © 2011-2022 走看看