#include using namespace std; #define int asdasdasdasd #define ll long long ll naive(ll N, ll M) { ll s = 0; for (ll i = N; i <= M; i++) { for (ll j = 1; j <= i; j++) { if (i%j == 0) s++; } } return s; } ll process(ll x, ll y) { ll root = sqrt(y); // root*root <= y while (root*root < y) root++; while (root*root > y) root--; // root*root <= y ll s = 0; for (ll i = 1; i <= root; i++) { if (i*i > x) x = i*i; ll lower = (x+i-1)/i; ll upper = y/i; s += 2*(upper - lower + 1); //cerr << i << " oszto:" << 2*(upper - lower + 1) << endl; } //cerr << x << " " << y << " -> gyok: " << root << " ertek: " << s << endl; return s; } int32_t main() { cin.sync_with_stdio(false); cin.tie(nullptr); long long N, M; cin >> N >> M; ll s = process(N, M); ll root = sqrt(N); while (root*root > N) root--; while (root*root < N) root++; // root*root >= N while (root*root <= M) { s--; root++; } //assert(s == naive(N,M)); cout << s << endl; return 0; }