用java实现欧几里得算法

“欧几里得算法:欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。”——百度百科
【注意,公式是gcd(a,b)=gcd(b,a mod b),不能是gcd(a,b)=gcd(a mod b,b)。否则会出问题。】

gcd.java:


package zdy.com.company;

public class gcd {

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

// 若q是0,则最大公约数为p。

// 否则,将p除以q得到余数r,p和q的最大公约数即为q和r的最大公约数。

    public static int gcd(int p,int q){

        if(q==0)return p;

        int r = p % q;

        return gcd(q,r);

    }

}

【在这里,如果公式是gcd(a,b)=gcd(a mod b,b),即q≠0时return的是gcd(r,q),当传入的p=6,q=33时,会陷入死循环。】

Main.java:

package zdy.com.company;

import java.awt.*;

public class Main
{
    public static void main(String args[]){
            int i=0;
            i=gcd.gcd(6,33);//调用欧几里得算法计算6和33的公约数
            System.out.print(i);
    }

}


运行结果


运行结果.png

你可能感兴趣的:(用java实现欧几里得算法)