- typedef int INT;
- INT gcd(INT a, INT b);
- INT lcm(INT a, INT b);
- /*****************************************************************************
- * 函数:LcmN *
- * 参数:pnNum:数字数组. *
- * nLen:数字个数. *
- * 返回值:返回多个数字的最小公倍数. *
- * 功能:计算并返回多个数字的最小公倍数. *
- * 说明:调用函数:INT lcm(INT a, INT b); *
- *****************************************************************************/
- INT LcmN(INT *pnNum, INT nLen)
- {
- INT i;
- INT nRes;
- if (nLen < 0)
- return -1;
- if (1 == nLen)
- return pnNum[0];
- nRes = lcm(pnNum[0], pnNum[1]);
- for (i=2; i<nLen; i++)
- nRes = lcm(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;
- }
- /*****************************************************************************
- * 函数:lcm *
- * 参数:a:数字1. *
- * b:数字2. *
- * 返回值:返回a和b的最小公倍数. *
- * 功能:计算并返回a和b的最小公倍数. *
- * 说明:调用函数:INT gcd(INT a, INT b); *
- *****************************************************************************/
- INT lcm(INT a, INT b)
- {
- return a / gcd(a, b) * b;
- }
多个数最小公倍数
最新推荐文章于 2024-09-21 16:35:48 发布