typedef int INT;
INT gcd(INT a, INT b);
/*****************************************************************************
* 函数:GcdN *
* 参数:pnNum:数字数组. *
* nLen:数字个数. *
* 返回值:返回多个数字的最大公约数. *
* 功能:计算并返回多个数字的最大公约数. *
* 说明:调用函数:INT gcd(INT a, INT b); *
*****************************************************************************/
INT GcdN(INT *pnNum, INT nLen)
{
INT i;
INT nRes;
if (nLen < 0)
return -1;
if (1 == nLen)
return pnNum[0];
nRes = gcd(pnNum[0], pnNum[1]);
for (i=2; i<nLen; i++)
nRes = gcd(nRes, pnNum[i]);
return nRes;
}
/*****************************************************************************
* 函数:gcd *
* 参数:a:数字1. *
* b:数字2. *
* 返回值:返回a和b的最大公约数. *
* 功能:计算并返回a和b的最大公约数(递归版本). *
*****************************************************************************/
/*
INT gcd(INT a, INT b)
{
if (0 == b)
return a;
return gcd(b, a % b);
}
*/
/*****************************************************************************
* 函数:gcd *
* 参数:a:数字1. *
* b:数字2. *
* 返回值:返回a和b的最大公约数. *
* 功能:计算并返回a和b的最大公约数(循环版本). *
*****************************************************************************/
INT gcd(INT a, INT b)
{
INT nTem;
while (0 != b)
{
nTem = b;
b = a % b;
a = nTem;
}
return a;
}