#include<bits/stdc++.h>
using namespace std;
#define faster() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int dem[1000005];
int nt[1000000];
// Hàm này dùng để sàng số nguyên tố
void sang(){
nt[0]=1;
nt[1]=1;
for (int i=2;i<=sqrt(1000000);i++)
if (nt[i]==0)
for (int j=i*i;j<=1000000;j+=i) nt[j]=1;
}
int uoc[1000005];
// Hàm này là hàm sàng biến đổi để đếm số lượng các ước của 1 số
void sanguoc(){
uoc[0]=0;
for (int i=1;i<=1000000;i++)
for (int j=i;j<=1000000;j+=i)
uoc[j]++;
}
// Hàm này là hàm cộng dồn số hoàn hảo
void sangshh(){
dem[0]=0;
for (int i=1;i<=1000000;i++)
// Kiểm tra xem số lượng ước của 1 số có phải là số nguyên tố hay không?
if (nt[uoc[i]]==0) dem[i]=dem[i-1]+1;
else dem[i]=dem[i-1];
}
void solve(){
int a, b;
cin >> a >> b;
cout << dem[b]-dem[a-1] << "\n";
}
int main(){
int t;
faster();
cin >> t;
sang();
sanguoc();
sangshh();
while (t--) solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBmYXN0ZXIoKSBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CmludCBkZW1bMTAwMDAwNV07CmludCBudFsxMDAwMDAwXTsKLy8gSMOgbSBuw6B5IGTDuW5nIMSR4buDIHPDoG5nIHPhu5Egbmd1ecOqbiB04buRCnZvaWQgc2FuZygpewoJbnRbMF09MTsKCW50WzFdPTE7Cglmb3IgKGludCBpPTI7aTw9c3FydCgxMDAwMDAwKTtpKyspCgkgICAgaWYgKG50W2ldPT0wKQoJICAgICAgICBmb3IgKGludCBqPWkqaTtqPD0xMDAwMDAwO2orPWkpIG50W2pdPTE7Cn0KaW50IHVvY1sxMDAwMDA1XTsKLy8gSMOgbSBuw6B5IGzDoCBow6BtIHPDoG5nIGJp4bq/biDEkeG7lWkgxJHhu4MgxJHhur9tIHPhu5EgbMaw4bujbmcgY8OhYyDGsOG7m2MgY+G7p2EgMSBz4buRCnZvaWQgc2FuZ3VvYygpewoJdW9jWzBdPTA7Cglmb3IgKGludCBpPTE7aTw9MTAwMDAwMDtpKyspCgkgICAgZm9yIChpbnQgaj1pO2o8PTEwMDAwMDA7ais9aSkKCSAgICAgICAgdW9jW2pdKys7Cn0KLy8gSMOgbSBuw6B5IGzDoCBow6BtIGPhu5luZyBk4buTbiBz4buRIGhvw6BuIGjhuqNvCnZvaWQgc2FuZ3NoaCgpewoJZGVtWzBdPTA7Cglmb3IgKGludCBpPTE7aTw9MTAwMDAwMDtpKyspCiAgICAgICAgLy8gS2nhu4NtIHRyYSB4ZW0gc+G7kSBsxrDhu6NuZyDGsOG7m2MgY+G7p2EgMSBz4buRIGPDsyBwaOG6o2kgbMOgIHPhu5Egbmd1ecOqbiB04buRIGhheSBraMO0bmc/CgkgICAgaWYgKG50W3VvY1tpXV09PTApIGRlbVtpXT1kZW1baS0xXSsxOwoJICAgIGVsc2UgZGVtW2ldPWRlbVtpLTFdOwp9CnZvaWQgc29sdmUoKXsKCWludCBhLCBiOwoJY2luID4+IGEgPj4gYjsKCWNvdXQgPDwgZGVtW2JdLWRlbVthLTFdIDw8ICJcbiI7Cn0KaW50IG1haW4oKXsKCWludCB0OwoJZmFzdGVyKCk7CgljaW4gPj4gdDsKCXNhbmcoKTsKCXNhbmd1b2MoKTsKCXNhbmdzaGgoKTsKCXdoaWxlICh0LS0pIHNvbHZlKCk7Cn0=