#include <bits/stdc++.h>
using namespace std;
int compare(const void* a, const void* b) { return (*(int*)a - *(int*)b); }
int gcd(int a, int b) {
  if (a == 0) return b;
  if (b == 0) return a;
  if (a > b) return gcd(b, a % b);
  return gcd(a, b % a);
}
bool CP(long long n) {
  long long t = (long long)sqrt(n);
  if (t * t == n || (t - 1) * (t - 1) == n || (t + 1) * (t + 1) == n)
    return true;
  return false;
}
int main() {
  long long n, m, i, b, c, cmax;
  cin >> n >> m;
  long long A, B, r = 0;
  for (i = -2 * n; i < 0; i++) {
    long long t = -i * i - 1;
    if (t % (2 * i) == 0)
      B = t / (2 * i);
    else
      B = t / (2 * i) + 1;
    A = (-i * i - m) / (2 * i);
    if (A >= B)
      if ((A >= 1 && A <= n) || (B >= 1 && B <= n) || (B <= 1 && A >= n)) r++;
  }
  for (b = 1; b <= n; b++) {
    if (b * b < m)
      cmax = b * b;
    else
      cmax = m;
    long long c1, c2;
    c1 = (long long)sqrt(b * b - 1);
    c2 = (long long)sqrt(b * b - cmax);
    if (!CP(b * b - cmax)) c2++;
    r += (long long)2 * (cmax - (c1 - c2 + 1));
  }
  cout << r;
  return 0;
}
