#include <bits/stdc++.h>
using namespace std;
const long double epsilon = 1e-9;
void func(double n, double mu) {
  map<double, int> m;
  for (double i = 1.0; i < n + epsilon; i++)
    for (double j = 1.0; j < mu + epsilon; j++) {
      if (i * i - j > -epsilon) {
        m[-i - sqrt(i * i - j)]++;
        m[-i + sqrt(i * i - j)]++;
      }
    }
  cout << "Size: " << +m.size() << endl;
  for (map<double, int>::iterator itr = m.begin(); itr != m.end(); ++itr) {
    if (itr->second > 1) {
      cout << itr->first << ": " << itr->second << endl;
    }
  }
}
int main() {
  long long b, c;
  cin >> b >> c;
  long long lim = min(2 * b - 1, c);
  long long ans = 0;
  long long t;
  for (long long a = 1; a <= b; a++) {
    ans += min(a * a, c) * 2;
  }
  long long p;
  bool bu;
  int odd;
  for (long long a = 1; a <= lim; a++) {
    odd = (a % 2 == 1);
    bu = false;
    if (a * a <= c && (a + a) <= 2 * b) {
      bu = true;
      ans -= 1;
    }
    p = min((2 * b - a + odd) / 2, (c / a + odd) / 2);
    if (p > 0) {
      ans -= p;
      bu = true;
    }
    if (bu) ans += 1;
  }
  cout << ans << endl;
  return 0;
}
