#include <bits/stdc++.h>
using namespace std;
int integers(long double a, long double b) {
  assert(a >= 0 && b >= 0);
  int x = (int)(ceil(a - 1e-9) + 1e-9);
  int y = (int)(floor(b + 1e-9) + 1e-9);
  if (y < x) return 0;
  return y - x + 1;
}
bool good[10000005];
int main() {
  int N, M;
  cin >> N >> M;
  long long ans = 0;
  vector<pair<long double, long double> > S(2 * N);
  long double low, high;
  int b;
  for (b = 1; b <= N; ++b) {
    low = sqrt(max(0ll, 1ll * b * b - M));
    high = sqrt((long double)b * (long double)b - 1);
    S[2 * b - 2] = make_pair(low - b, high - b);
    S[2 * b - 1] = make_pair(-high - b, -low - b);
    int adder = (int)min(1ll * M, 1ll * b * b);
    adder -= integers(low, high);
    ans += 2 * adder;
  };
  N = S.size();
  for (int i = 0; i < (N); ++i) {
    long double a = S[i].first, b = S[i].second;
    for (int k = (int)(a - 1 - 1e-9); k <= (int)(b + 1 + 1e-9); ++k) {
      if (a - 1e-9 <= k && k <= b + 1e-9 && !good[-k]) {
        good[-k] = true;
        ++ans;
      }
    }
  }
  cout << ans << endl;
}
