暴力枚举公约数,有两个数是这个公约数倍数的就可以
2 4 1 2 3 4 3 3 6 9
Case #1: 2 Case #2: 3
/* *********************************************** Author :CKboss Created Time :2015年04月18日 星期六 19时04分39秒 File Name :B.cpp ************************************************ */ #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <cmath> #include <cstdlib> #include <vector> #include <queue> #include <set> #include <map> using namespace std; const int maxn=100100; int n; int a[maxn]; int vis[maxn]; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int T_T,cas=1; scanf("%d",&T_T); while(T_T--) { scanf("%d",&n); int mx=0,ans=-1; memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) { scanf("%d",a+i); mx=max(mx,a[i]); vis[a[i]]++; } for(int i=mx;i>=1;i--) { if(ans>0) break; int temp=0; for(int j=i;j<=mx;j+=i) temp+=vis[j]; if(temp>=2) ans=i; } printf("Case #%d: %d\n",cas++,ans); } return 0; }