#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int N = 1e11, M = sqrt(N) + 5;
int b[M];
vector<int> v;
void init() {
for(int i = 2; i <= M - 5; i++) {
if(!b[i]) v.push_back(i);
for(int j = 0; j < v.size(); j++) {
int p = v[j];
if(p * i > M - 5) break;
b[p * i] = 1;
if(!(i % p)) break;
}
}
}
int n, d[M * 2], f[M], g[M], cnt, s, h[M * 2];
int& work(int x) {
if(x <= s) return f[x];
else return g[n / x];
}
int getpi(int n) {
s = sqrt(n); cnt = 0;
for(int l = 1, r; l <= n; l = r + 1) {
r = n / (n / l);
d[work(n / l) = ++cnt] = n / l, h[cnt] = n / l - 1;
}
for(int i = 0; i < v.size(); i++) for(int j = 1; d[j] >= v[i] * v[i]; j++) h[j] -= h[work(d[j] / v[i])] - i;
return h[1];
}
int l, r;
signed main() {
init();
cin>>l>>r; cout<<getpi(r) - getpi(l - 1)<<endl;
}