#include <bits/stdc++.h>
using namespace std;
int n, m;
bool cov[1000010];
int gPositiveMove(int i) {
  if (i == n - 1) return i;
  if (i + m - 1 > n - 1) {
    int take = i - 2 * (i + m - 1 - (n - 1));
    if (take < 0) take = -take;
    return take;
  }
  if (i + 2 * (m - 1) > n - 1) {
    return i + 2 * (m - 1) - 2 * (i + 2 * (m - 1) - (n - 1));
  }
  return i + 2 * (m - 1);
}
int gNegativeMove(int i) {
  int ti = n - 1 - i;
  ti = gPositiveMove(ti);
  return n - 1 - ti;
}
void go(int i) {
  cov[i] = true;
  int ti = gPositiveMove(i);
  if (!cov[ti]) go(ti);
  ti = gNegativeMove(i);
  if (!cov[ti]) go(ti);
}
int main() {
  scanf("%d%d", &n, &m);
  if (n < m) {
    int t = n;
    n = m;
    m = t;
  }
  int ret = 0;
  for (int i = 0; i < n; i++) {
    if (!cov[i]) {
      go(i);
      ret++;
    }
  }
  printf("%d\n", ret);
  return 0;
}
