题目描述
zlh看上一个学妹,问学妹要了QQ,他很高兴,但是当添加好友的时候发现竟然还有问题。
问题是给你n个数,你的任务是告诉zlh这些数的最大公约数是多少。
输入
第一行输入一个n(1<=n<=10),
第二行输入n个数a1,a2...an(2<=ai<1e9)。
输出
输出他们的最大公约数。
样例输入
10 2 3 4 5 6 7 8 9 10 11
样例输出
1
分析:先求两个数的最大公约数,将这个最大公约数与第三个数继续求最大公约数,不断更新。最终求得的最大公约数即为所有数的最大公约数
#include<stdio.h>
const int M=1e1+5;
int i,j,k;
int gcd(int c,int d)
{
return d==0?c:gcd(d,c%d);//辗转相除法求最大公约数
}
int main()
{
int n,a[M],min,max;
scanf("%d",&n);//输入数字数量
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);//依次输入数字
}
for(i=1;i<=n-1;i++)//两两求最大公约数
{
max=a[i]>a[i+1]?a[i]:a[i+1];
min=a[i]<a[i+1]?a[i]:a[i+1];
a[i+1]=gcd(max,min);
}
printf("%d\n",a[n]);//输出所有数字的最大公约数
}