求两个数的最大公约数(Euclid算法)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求两个数的最大公约数(Euclid算法)相关的知识,希望对你有一定的参考价值。

求两个数 p 和 q 的最大公约数(greatest common divisor,gcd),利用性质

如果 p > q, p 和 q 的最大公约数 = q 和 (p % q)的最大公约数。

证明:见 http://blog.csdn.net/niushuai666/article/details/7278027

public class Euclid{
    // recursive inplementation
    public static int gcd(int p, int q){
        if(q == 0) return p;
        else 
        {
            StdOut.println( q + " " + p % q);
            return gcd(q, p % q);
        }
    }
    // non-recursive implementation
    public static int gcd2(int p, int q){
    while(q != 0){
        int temp = q;
        q = p % q;
        p = temp;
    }
    return p;
    }
    public static void main(String[] args){
        int p = Integer.parseInt(args[0]);
        int q = Integer.parseInt(args[1]);
        int d  = gcd(p, q);
        int d2 = gcd2(p,q);
        StdOut.println("gcd(" + p + ", " + q + ") = " + d);
        StdOut.println("gcd(" + p + ", " + q + ") = " + d2);
    }
}

运行结果

技术分享

 

以上是关于求两个数的最大公约数(Euclid算法)的主要内容,如果未能解决你的问题,请参考以下文章

求两个数的最大公因数

求最大公约数(GCD)的两种算法

Python 如何求得两个数的最大公约数

求两个数的最大公约数

求最大公约数伪代码

最大公约数(Gcd)算法(Euclid)