枚举就可以了。

#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;
}
}