枚举就可以了。
#include <iostream>
#include <string>
#include <stack>
using namespace std;
//最大公约数
int main(){
int x,y;int gys=1;
while(scanf("%d%d",&x,&y)!=EOF){
for(int i=1;i<x;i++){
if (x%i+y%i==0)gys=i;
}
cout<<gys<<endl;}
return 0;
}
如果使用辗转相除法,可以更省时间
#include <iostream>
#include <string>
#include <stack>
using namespace std;
//最大公约数的另一种做法:辗转相除法
int GYS(int x,int y){
if(y==0)return x;
else return(GYS(y,x%y));
}
int main(){
int x,y;
while(scanf("%d%d",&x,&y)!=EOF){
printf("%d\n",GYS(x,y));
return 0;
}
}