#include <iostream> #include <stdio.h> #include <stdlib.h> #include <algorithm> #include <string.h> using namespace std; int main() { int t,i,c,j,n,x,max,k; int a[100005]; scanf("%d",&t); for(j=1;j<=t;j++) { scanf("%d",&n); memset(a,0,sizeof(a)); scanf("%d",&x); a[x]++; max=x; for(i=1;i<n;i++) { scanf("%d",&x); a[x]++; if(x>max) max=x; } int bi=0; for(i=max;i>0;i--) { for(k=1;k*i<=max;k++) { if(a[k*i]) { bi+=a[k*i]; } if(bi>1) break; } if(bi>1) break; bi=0; } printf("Case #%d: %d\n",j,i); } return 0; } 先求出最大值,再用最大值以此往下去试试否是至少两个数的约数,试的方法是向上筛除
时间: 2024-10-11 14:03:53