#include <bits/stdc++.h>
using namespace std;
const int N = 1000000 + 5;
int vis[N], n, m;
pair<int, int> Get(int x) {
  int a, b;
  if (x >= n)
    a = x - n + 1;
  else
    a = n - x + 1;
  x = m - x + 1;
  if (x >= n)
    b = m - (x - n + 1) + 1;
  else
    b = m - (n - x + 1) + 1;
  return pair<int, int>(a, b);
}
void dfs(int x) {
  pair<int, int> cur = Get(x);
  pair<int, int> nxt = Get(cur.first);
  if (!vis[nxt.first]) {
    vis[nxt.first] = 1;
    dfs(nxt.first);
  }
  if (!vis[nxt.second]) {
    vis[nxt.second] = 1;
    dfs(nxt.second);
  }
  nxt = Get(cur.second);
  if (!vis[nxt.first]) {
    vis[nxt.first] = 1;
    dfs(nxt.first);
  }
  if (!vis[nxt.second]) {
    vis[nxt.second] = 1;
    dfs(nxt.second);
  }
}
int main() {
  scanf("%d%d", &n, &m);
  if (n > m) swap(n, m);
  int ans = 0;
  for (int i = 1; i <= m; i++)
    if (!vis[i]) {
      ans++;
      vis[i] = 1;
      dfs(i);
    }
  printf("%d\n", ans);
  return 0;
}
