n个数的最大公约数问题
各位大哥大姐 ,我这里有一个求最大公约数的问题 只求两个数的我会
这个要求求n个数的最大公约数
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数,当n为零时结束。
为每组测试数据输出他们的最大公约数 例如:
input
2 4 6
3 2 5 7
0
output
2
1
程序代码:#include <stdio.h>
int judge(int a[], int count, int base)
{
int tmp = 0;
while (count)
{
tmp += 0 == a[--count] % base;
}
return tmp >= 2;
}
void Divide(int a[], int count, int base)
{
while (count)
{
if (0 == a[--count] % base)
a[count] /= base;
}
}
int max(int a[], int count)
{
int max = 0;
while (count--)
{
max = (max < a[count]) ? a[count] : max;
}
return max;
}
int main (void)
{
int i, tmp = 1;
int n, a[128];
while (scanf("%d", &n), n > 0)
{
tmp = 1;
for (i = 0;i < n;scanf("%d", &a[i++]));
for (i = 2;i < max(a, n);++i)
{
if (!judge(a, n, i)) continue;
Divide(a, n, i);
tmp *= i--;
}
for (i = 0;i < n;tmp *= a[i++]);
printf("%d\n", tmp);
}
return 0;
}

程序代码:#include<stdio.h>
int f(int a,int b) //定义函数 求两个数的最大公约数
{
int z;
z=b;
{while(a%z)
z--;}
b=z;
return b;
}
void main()
{
int n,i,a[10000],m;
printf("Please input n:\n"); //输入n
scanf("%d",&n);
printf("Please input %d numbers:\n",n);
for(i=0;i<n;i++) //输入n个数
scanf("%d",&a[i]);
m=f(a[0],a[1]);
for(i=2;i<n;i++)
m=f(a[i],m);
printf("这%d个数的最大公约数为%d\n",n,m);
}
程序代码:#include<stdio.h>
int f(int a,int b) //定义函数 求两个数的最大公约数
{
int z;
z=b;
{while(z%a)
z+=b;}
b=z;
return b;
}
void main()
{
int n,i,a[10000],m;
printf("Please input n:n"); //输入n
scanf("%d",&n);
printf("Please input %d numbers:n",n);
for(i=0;i<n;i++) //输入n个数
scanf("%d",&a[i]);
m=f(a[0],a[1]);
for(i=2;i<n;i++)
m=f(a[i],m);
printf("这%d个数的最大公倍数为%dn",n,m);
}