#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n;
int l,r;
int prime[N],cnt;
bool isprime[N+5];
int main()
{
cin>>n;
memset(isprime,true,sizeof(isprime));
for(int i=2;i<=N;i++)
{
if(isprime[i]) prime[++cnt]=i;
for(int j=1;j<=cnt && i*prime[j]<=N;j++)
{
isprime[i*prime[j]]=false;
if(i%prime[j]==0) break;
}
}
//cout<<cnt<<endl;
//for(int i=1;i<=100;i++) cout<<prime[i]<<endl;
while(n--)
{
cin>>l>>r;
int L1=1,R1=cnt;
while(L1<=R1)
{
int mid=L1+R1>>1;
if(prime[mid]<=l) L1=mid+1;
else R1=mid-1;
}
int L2=1,R2=cnt;
while(L2<=R2)
{
int mid=L2+R2>>1;
if(prime[mid]<=r) L2=mid+1;
else R2=mid-1;
}
int ans=L2-R1-1;
//if(prime[R2]==r) ans++;
if(prime[R1]==l) ans++;
//cout<<L2<<' '<<R1<<endl;
cout<<ans<<endl;
}
return 0;
}