美文网首页
用java实现欧几里得算法

用java实现欧几里得算法

作者: 千尘6025 | 来源:发表于2019-06-19 00:18 被阅读0次

“欧几里得算法:欧几里德算法又称辗转相除法,是指用于计算两个正整数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实现欧几里得算法

      本文链接:https://www.haomeiwen.com/subject/wsucqctx.html