欧几里得算法(辗转相除法)

介绍

欧几里得算法,又称辗转相除法,用于计算两个整数的最大公约数。

原理

下面通过一个例子介绍其原理:计算105和24的最大公约数:

105 = 24 x 4 + 9
24 = 9 * 2 + 6
9 = 6 * 1 + 3
6 = 3 * 2 + 0

当余数为0时,可得到最大公约数。105和24的最大公约数是3.

代码实现

递归版本:

public static int gcd (int p, int q) {
    if (q == 0)     return p;
    else            return gcd (q, p%q);
}

循环版本:

public static int gcdLoop (int p, int q) {
    while (q != 0) {
        int rem = p % q;
        p = q;
        q = rem;
    }
    return p;
}
    原文作者:mwangjs
    原文地址: https://www.jianshu.com/p/825bdca83fcc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞