求任意两个数的gcd最大值。
#include<cstring>
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<stack>
#include<vector>
#define N 110
using namespace std;
int n;
int s[N];
int gcd(int b,int a) {
return b==0?a:gcd(a%b,b);
}
int main() {
//freopen("test.in","r",stdin);
int t;
cin>>t;
getchar();
while(t--) {
char a[10100];
gets(a);
int len=0;
int b=0;
for(int i=0; a[i]; i++) {
if(a[i]==' ') {
if(b)
s[len++]=b;
b=0;
continue;
}
b=b*10+a[i]-48;
}
if(b)
s[len++]=b;
int ans=0;
for(int i=0; i<len; i++) {
for(int j=i+1; j<len; j++) {
ans=max(ans,gcd(s[i],s[j]));
}
}
printf("%d\n",ans);
//getchar();
}
return 0;
}原文地址:http://blog.csdn.net/acm_baihuzi/article/details/46540029