最大公约数的最大值
#include <stdio.h> #include <string.h> int main() { int i,j,n,m,k,a[100005],b[100005]; k=0; while(scanf("%d",&n)!=EOF) { while(n--) { memset(b,0,sizeof(b));//将数组初始化 k++; scanf("%d",&m); for(i=0;i<m;i++) { scanf("%d",&a[i]); } for(i=0;i<m;i++) { for(j=1;j*j<=a[i];j++) //求出a[i]的因子,跟素数的判定相同,只需到根号a[i]; { if(a[i]%j==0) { if(a[i]/j==j) { b[j]++; } //用b[i]记录i的个数 else { b[j]++; b[a[i]/j]++; } } } } for(i=100000;i>=1;i--) { if(b[i]>=2) { printf("Case #%d: %d\n",k,i); break; } } } } return 0; }