import java.util.*;
import java.io.*;
public class Main {
long []Primes
=new long[(long)Math.
sqrt(1000000002]; Primes[0] = 2;
int i
= 0,q
=0,sum
=0,t
= Integer.
parseInt(read.
readLine()); boolean flag = true;
long start, end,c=2,tester,n,m,holder;
double root,root2;
long counter = 1;
while (counter<=t){
string = read.readLine().split(" ");
n
= Long.
parseLong(string
[0]); m
= Long.
parseLong(string
[1]); start
= System.
currentTimeMillis();
holder = n;
q = 0;
i = 0;
Primes[0] = 2;
c = 2;
flag = true;
n
= (int)Math.
sqrt(1000000000); if (holder == 1){
c++;
n = 2;
holder = 2;
}
while (c <= n){
root
= (int)Math.
sqrt(c
); while ( q <= i && Primes[q] <= root){
tester = c % Primes[q];
if (tester == 0){
flag = false;
break;
}
q++;
}
if ( flag == true){
Primes[i+1] = c;
i++;
}
c++;
q = 0;
flag = true;
}
c = holder;
q = 0;
flag = true;
root = 0;
while ( c < m){
q = 0;
while (n <= root){
while ( q <= i){
tester = n % Primes[q];
if (tester == 0){
flag = false;
break;
}
q++;
}
if ( flag == true){
Primes[i+1] = n;
i++;
}
q = 0;
flag = true;
n++;
}
n = holder;
q = 0;
while ( q <= i && Primes[q] <= root){
if ( c == 2){
sum++;
flag = false;
}/*else if(c%2==0 || c%3==0||c%5==0){
flag=false;
break;
}
*
*/
else if ( c % Primes[q] == 0){
flag = false;
break;
}
q++;
}
if (flag == true){
sum++;
}
c++;
flag = true;
q = 0;
}
end
= System.
currentTimeMillis(); System.
out.
println("\nExecution time: " + (end
-start
) + " milliseconds.\n" + sum
); counter++;
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5pby4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdYXJncyl0aHJvd3MgRXhjZXB0aW9uewogICAgICAgIAogICAgICAgIEJ1ZmZlcmVkUmVhZGVyIHJlYWQgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwogICAgICAgIAogICAgICAgIGxvbmcgW11QcmltZXM9bmV3IGxvbmdbKGxvbmcpTWF0aC5zcXJ0KDEwMDAwMDAwMDJdOwogICAgICAgIFByaW1lc1swXSA9IDI7CiAgICAgICAgaW50IGkgPSAwLHE9MCxzdW09MCx0ID0gSW50ZWdlci5wYXJzZUludChyZWFkLnJlYWRMaW5lKCkpOwogICAgICAgIGJvb2xlYW4gZmxhZyA9IHRydWU7CiAgICAgICAgbG9uZyBzdGFydCwgZW5kLGM9Mix0ZXN0ZXIsbixtLGhvbGRlcjsKICAgICAgICBkb3VibGUgcm9vdCxyb290MjsKICAgICAgICBsb25nIGNvdW50ZXIgPSAxOwogICAgICAgIFN0cmluZ1tdIHN0cmluZzsKICAgICAgICAKd2hpbGUgKGNvdW50ZXI8PXQpewogICAgIHN0cmluZyA9IHJlYWQucmVhZExpbmUoKS5zcGxpdCgiICIpOwogICAgIG4gPSBMb25nLnBhcnNlTG9uZyhzdHJpbmdbMF0pOwogICAgIG0gPSBMb25nLnBhcnNlTG9uZyhzdHJpbmdbMV0pOwogICAgIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CgogICAgIAogICAgIGhvbGRlciA9IG47CiAgICAgcSA9IDA7CiAgICAgaSA9IDA7CiAgICAgUHJpbWVzWzBdID0gMjsKICAgICBjID0gMjsKICAgICBmbGFnID0gdHJ1ZTsKICAgICAgICAKICAgICAgICBuID0gKGludClNYXRoLnNxcnQoMTAwMDAwMDAwMCk7CiAgICAgICAgaWYgKGhvbGRlciA9PSAxKXsKICAgICAgICAgICAgYysrOwogICAgICAgICAgICBuID0gMjsKICAgICAgICAgICAgaG9sZGVyID0gMjsKICAgICAgICB9CiAgICAgICAgICAKICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAKICAgICAgICB3aGlsZSAoYyA8PSBuKXsKICAgICAgICAgICAgcm9vdCA9IChpbnQpTWF0aC5zcXJ0KGMpOwogICAgICAgICAgICB3aGlsZSAoIHEgPD0gaSAmJiBQcmltZXNbcV0gPD0gcm9vdCl7CiAgICAgICAgICAgICAgICB0ZXN0ZXIgPSBjICUgUHJpbWVzW3FdOwogICAgICAgICAgICAgICAgaWYgKHRlc3RlciA9PSAwKXsKICAgICAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBxKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBmbGFnID09IHRydWUpewogICAgICAgICAgICAgICAgUHJpbWVzW2krMV0gPSBjOwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGMrKzsKICAgICAgICAgICAgcSA9IDA7CiAgICAgICAgICAgIGZsYWcgPSB0cnVlOyAgIAogICAgICAgIH0KICAgICAgICAKICAgICAgICBjID0gaG9sZGVyOwogICAgICAgIHEgPSAwOwogICAgICAgIGZsYWcgPSB0cnVlOwogICAgICAgIHJvb3QgPSAwOwogICAgICAgIAogICAgICAgCiAgICAgICAgCiAgICAgd2hpbGUgKCBjIDwgbSl7CiAgICAgICAgICAgIHJvb3QgPSBNYXRoLnNxcnQoYyk7CiAgICAgICAgICAgIHEgPSAwOwogICAgICAgIHdoaWxlIChuIDw9IHJvb3QpewogICAgICAgICAgICAgICAgd2hpbGUgKCBxIDw9IGkpewogICAgICAgICAgICAgICAgdGVzdGVyID0gbiAlIFByaW1lc1txXTsKICAgICAgICAgICAgICAgIGlmICh0ZXN0ZXIgPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCBmbGFnID09IHRydWUpewogICAgICAgICAgICAgICAgUHJpbWVzW2krMV0gPSBuOwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHEgPSAwOwogICAgICAgICAgICBmbGFnID0gdHJ1ZTsgICAKICAgICAgICAgICAgbisrOwogICAgICAgIH0KICAgICAgICBuID0gaG9sZGVyOwogICAgICAgIHEgPSAwOwogICAgICAgICAgIHdoaWxlICggcSA8PSBpICYmIFByaW1lc1txXSA8PSByb290KXsKICAgICAgICAgICAgICAgaWYgKCBjID09IDIpewogICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGMpOwogICAgICAgICAgICAgICAgICAgc3VtKys7CiAgICAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgIH0vKmVsc2UgaWYoYyUyPT0wIHx8IGMlMz09MHx8YyU1PT0wKXsKICAgICAgICAgICAgICAgICAgIGZsYWc9ZmFsc2U7CiAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAqIAogICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgZWxzZSBpZiAoIGMgJSBQcmltZXNbcV0gPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChmbGFnID09IHRydWUpewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYyk7CiAgICAgICAgICAgIHN1bSsrOyAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgICAgICBjKys7CiAgICAgICAgICAgIGZsYWcgPSB0cnVlOwogICAgICAgICAgICBxID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJcbkV4ZWN1dGlvbiB0aW1lOiAiICsgKGVuZC1zdGFydCkgKyAiIG1pbGxpc2Vjb25kcy5cbiIgKyBzdW0pOwogICAgY291bnRlcisrOwogICAgCiAgICAKICAgICAKCiAgICAKfQp9Cn0K