关于最大公约数的三种解法之一(欧几里得算法)

亚历山大时期的欧几里得所著的《几何原本》中这样定义了最大公约数的算法,两个不全为0的非负整数m,n的最大公约数记为gcd(m,n),代表能够整除(即余数为0)m,n的最大正整数。欧几里得算法的方法就是重复应用下列等式,一直到m  mod n等于0。

                                  gcd(m.n)=gcd(n,m mod n)  (m mod n表示m除以n之后的余数),下面是我关于这个式子写的一个算法描述。

       首先,如果n=0,返回m的值作为结果,同时过程结束,否则进入第二步

       第二步,m除以n,将余数赋给r 

       第三步,将n的值赋给m,将r的值赋给n,返回第一步

     下面是具体的算法

  package gcd;

public class gcd1 {
              
              public static int gcd(int m,int n)
              {
                  if(n==0)
                  {
                      return m;
                  }
                  else
                  {
                    
                          do
                          {
                              int r=m%n;
                              m=n;
                              n=r;
                      
                          }while(n!=0);//表达式
                          return m;
                     
                  }
                  
              }
    /**
     * @param args
     */
    public static void main(String[] args) {
        
        // TODO Auto-generated method stub
             System.out.println(gcd(99,66));

    }

}


你可能感兴趣的:(我的算法之路)