/****************************************************************/
/* 21:55 2007/04/30	Defolos					*/
/* ユークリッド互除法を用いた最大公約数の算出アルゴリズム	*/
/* 再帰アルゴリズムによる実現					*/
/****************************************************************/
#include <stdio.h>

int euclid(int x, int y);

int main(void){
	int x, y, z;
	scanf("%d %d", &x, &y);
	printf("%d\n", euclid(x,y));
	return 0;
}

int euclid(int x, int y){
	if(y == 0){return x;}
	else{return euclid(y, x%y);}
}
/*--------------------------------------------------------------*/



/****************************************************************/
/* 21:55 2007/04/30	Defolos					*/
/* ユークリッド互除法を用いた最大公約数の算出アルゴリズム	*/
/* 再帰アルゴリズムを用いない表現				*/
/****************************************************************/
int euclid(int x, int y){

	int q, r;

	if(x == 0 || y == 0){
		return 1;
	}
	if(x < 0){
		x =- x;
	}
	if(y < 0){
		y =- y;
	}
	while(1){
		q = x / y;
		r = x - (q * y);
		if(r == 0){
			break;
		}
		x = y;
		y = r;
	}
	return y;
}
/*--------------------------------------------------------------*/

