求最大公约数和最小公倍数算法

使用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
  }

猜你喜欢

转载自blog.csdn.net/u010225915/article/details/79390602