初学gcd。

来源:互联网 发布:javascript use strict 编辑:程序博客网 时间:2024/06/14 13:01


//欧里基德法求最大公约数
//性质:gcd(a,b)=gcd(b,a%b)


// 库函数版:__gcd(a,b)


//递归版
int gcd(int a,int b){
  return b==0?a:gcd(b,a%b);    //if(b>a) ,gcd(b,a%d)作用相当于交换a,b位置
}


//模拟
  10 15
   a    b
  15 10   b>a 交换a,b并递归
   10 5
    5 0                   //b==0 -->最大公约数为5


//非递归版本
int gcd(int a,int b){
  while(1){
    if(b>a)  swap(a,b);
    else {
      if(a%b==0) return b;
      int temp = b;
      b = a%b;
      a = temp;
    }
  }
}

0 0
原创粉丝点击