第1个回答 推荐于2016-06-14
int gcd(int, int); //两个数的最大公约数
int ngcd(int *, int) //N个数的最大公约数
int lcm(int, int) //两个数的最小公倍数
int nlcm(int *, int) //N个数的最小公倍数
int gcd(int a, int b)
{
if(a < b) //swap(a,b)
{
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
int c;
while((c = a % b) != 0) //辗转相除
{
a = b;
b = c;
}
return b;
}
int ngcd(int * pa, int n)
{
if(n == 1)
return *pa;
return (gcd(pa[n-1], ngcd(pa, n-1)));
}
int lcm(int a, int b) //最大公倍数 = 两数乘积 / 最大公约数
{
return a*b/gcd(a, b);
}
int nlcm(int * pa, int n)
{
if(n == 1)
return *pa;
return lcm(pa[n-1], nlcm(pa, n-1));
}本回答被提问者采纳