Max Gcd
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
给一个长度为 n 的数列 {an} ,找出 max { gcd(ai , aj) }(i != j)。
-
输入
-
多组测试数据。(100组)
第 1 行 1 个数 n。(2<=n<=10^5)
接下来的 1 行有 n 个数 ai。(1<=ai<=10^5)
输出
- 1 行有 1 个数,max { gcd(ai , aj) }(i != j)。 样例输入
-
3 1 2 4
样例输出
-
2
上传者
-
ACM_丁国强
ac代码
#include<stdio.h> #include<string.h> #include<stdlib.h> int a[100005]; int cmp(const void *a,const void *b) { return *(int *)a-*(int *)b; } int main() { int n; while(scanf("%d",&n)!=EOF) { int i,j,temp=0; for(i=0;i<n;i++) scanf("%d",&a[i]); qsort(a,n,sizeof(a[0]),cmp); for(i=a[n-1];i>=1;i--) { temp=0; for(j=n-1;j>=0;j--) { if(a[j]%i==0) temp++; if(temp==2) break; } if(temp==2) { printf("%d\n",i); break; } } } }
-
多组测试数据。(100组)