求两个数的最大公约数

1. 非递归实现

int max_common_divisor(int a, int b)

{

  int nRet=1;

  int max=a>b?b:a;

  for(int i=min; i>2; i++)

  {

    if(a%i==0 && b%i==0) nRet=i;

  }

  return nRet;

}

 

2. 递归实现(辗转相除法)
如求12 8的最大公约数
12%8  4
8%4    0(此时4为最大公约数)

 

//当有一个为0时,另一个为最大公因数

int max_common_divisor(int a, int b)

{

  int nMax=a>b?a:b;

  int nMin=a<b?a:b;

  int nMaxGY=nMax;    //最大公约数

  

  if(0==nMin)

  {

    return nMaxGY;

  }  

  else

    return max_common_divisor(nMax, nMax%nMin);

}

 

posted @ 2015-04-18 15:52  hy1hy  阅读(210)  评论(0编辑  收藏  举报