#include<bits/stdc++.h>
using namespace std;
const long long N=1e6+20;
long long pal[N],tot,l,r,ans;
bool isp[N],vis[N];
void before()
{
for(long long i=0;i*i<=r;i++) isp[i]=1;
isp[1]=0;
for(long long i=2;i*i<=r;i++)
{
if(isp[i]==1)
{
pal[++tot]=i;
}
for(long long j=1;j<=tot&&pal[j]*i<=r;j++)
{
isp[pal[j]*i]=0;
if(i%pal[j]==0)break;
}
}
}
void find()
{
for(long long i=0;i<=r-l;i++) vis[i]=1;
for(long long i=1;i<=tot;i++)
{
long long k=pal[i];
long long j=max(k*k,l/k*k);
if(j<l) j+=k;
for(;j<=r;j+=k)
{
vis[j-l]=0;
}
}
}
int main()
{
scanf("%lld %lld",&l,&r);
before();
find();
for(long long i=0;i<=r-l;i++)
{
if(vis[i]==1&&i+l!=1) ans++;
}
printf("%lld",ans);
}