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

问题


  • 计算两个非负整数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
posted @ 2017-11-29 09:41  Freelancy  阅读(701)  评论(0编辑  收藏  举报