求n个数的最大公约数

求两个数的最大公约数的方法很多,如下面的递归法:

int gcd(int n, int m)
{
if (n<m)
{
n
=m+n;
m
=n-m;
n
=n-m;
}
if (m==0) return n;
return gcd(m,n%m);
}

下面我使用数组写了个计算n个数的最大公约数的代码:

int max_common_divisor(int several[], int n)
{
int a=several[0];
int b=several[1];
int c=gcd(a,b);
int i;
for (i=2; i<n; i++)
{
c
=gcd(c,several[i]);
}
return c;
}

写个主函数来测试下:

#include <stdio.h>
#include
<stdlib.h>

int gcd(int a, int b);//求两个数的最大公约数
int max_common_divisor(int several[], int n);//求n个数的最大公约数

int main()
{
int a[4];
int x,y;
a[
0]=147;
a[
1]=210;
a[
2]=315;
a[
3]=84;
printf(
"最大公约数为:%d\n",max_common_divisor(a,4));
return 0;
}

测试结果如下:



posted @ 2011-07-09 00:33  涵曦  阅读(10347)  评论(9编辑  收藏  举报