求两个数的最大公约数——欧几里得算法

问题


  • 计算两个非负整数p和q的最大公约数

算法思想


  • 若q是0,则最大公约数为p
  • 否则,将p除以q得到余数r
  • p和q的最大公约数即为q和r的最大公约数

Java


  • 源码
public class GCD {
    
    // 获取最大公约数
    public static int gcd(int p, int q) {
        if (q == 0) return p;
        int r = p % q;
        return gcd(q, r);
    }
}
  • 测试用例
public class Test {
    public static void main(String[] args) {
        int a = 16;
        int b = 20;
        System.out.println(GCD.gcd(a, b));
    }
}
  • 测试结果
4
原文地址:https://www.cnblogs.com/freelancy/p/7918628.html