美文网首页
用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