1. 程式人生 > >求最大公約數和最小公倍數演算法

求最大公約數和最小公倍數演算法

使用scala語言求解兩個數的最大公約數和最小公倍數

最大公約數

  //歐幾里得演算法(遞迴方式)
  def gcdLoop(a:Long,b:Long): Long ={
    var x=a
    var y=b
    while(y!=0){
      val tmp=x%y
      x=y
      y=tmp
    }
    x
 }
//(非遞迴方式)  
def gcd(a:Long,b:Long):Long={
   if(b==0) a else gcd(b,a%b)
} 

最小公倍數=兩個數的乘積除以兩個數的最大公約數

  def lcmLoop(a:Long,b:Long): Long ={
    var x=a
    var y=b
    while(y!=0){
      val tmp=x%y
      x=y
      y=tmp
    }
  a*b/x
  }