//数学不好没关系,你可以慢慢啃
//但是你想的逆向思维必须得有
#include<stdio.h>
//求两个数的最大公约数
//辗转相除法
//int main()
//{
// int m = 0;
// int n = 0;
// scanf("%d %d", &m, &n);//8 24
// int k = 0;
// while (k = m % n)
// {
// m = n;
// n = k;
// }
// printf("%d\n", n);
//
// return 0;
//}
//思路讲解
// m % n k
// 24 18 6
//交换
// 18 6 0
//就算大小顺序颠倒
// 18 24 18
// 24 18 6
// 18 6 0
//说白了就是说,最大那个数和最小的那个数字都是他们因数的倍数,我们求的就是那些因数里的公共因数,然后找最大的那个因数
//再解释
//168=1x93+75
//93=1x75+18
//75=4x18+3
//18=6x3+0
//以后遇到这种就仔细思考,仔细思考,再仔细思考直到明白为止
//欧几里德算法
//
int main()
{
int m = 0;
int n = 0;
scanf("%d %d", &m, &n);
int k = (m>n ? n:m);
while (1)
{
if (m % k == 0 && m % k == 0)
{
break;
}
k--;
}
printf("%d\n", k);
return 0;
}