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); }