#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
long long p[1000005], cnt;
bool v[1000005];
int main()
{
long long l, r;
cin >> l >> r;
if (l == 1) l = 2;
for (int i = 2; i <= 50000; ++i)
{
if (!v[i])
p[++cnt] = i;
for (int j = 1; p[j] && i * p[j] <= 50000; ++j)
{
v[i * p[j]] = 1;
if (i % p[j] == 0)
break;
}
}
memset(v, 0, sizeof v);
for (int i = 1; i <= cnt; ++i)
{
long long tp = max((long long)(ceil ((double)(l) / (double) (p[i])) * p[i]), (long long)(p[i] << 1));
for (tp; tp <= r; tp += p[i])
{
if (tp - l <= 1000000)
v[tp - l] = 1;
}
}
int ans = 0;
for (int i = l; i <= r; ++i)
{
if (!v[i - l])
++ans;
}
cout << ans;
return 0;
}