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

亚历山大时期的欧几里得所著的《几何原本》中这样定义了最大公约数的算法,两个不全为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));

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值