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++;
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5pby4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdYXJncyl0aHJvd3MgRXhjZXB0aW9uewogICAgICAgIAogICAgICAgIEJ1ZmZlcmVkUmVhZGVyIHJlYWQgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwogICAgICAgIAogICAgICAgIGxvbmcgW11QcmltZXM9bmV3IGxvbmdbKGxvbmcpTWF0aC5zcXJ0KDEwMDAwMDAwMDIpXTsKICAgICAgICBQcmltZXNbMF0gPSAyOwogICAgICAgIGludCBpID0gMCxxPTAsc3VtPTAsdCA9IEludGVnZXIucGFyc2VJbnQocmVhZC5yZWFkTGluZSgpKTsKICAgICAgICBib29sZWFuIGZsYWcgPSB0cnVlOwogICAgICAgIGxvbmcgc3RhcnQsIGVuZCxjPTIsdGVzdGVyLG4sbSxob2xkZXI7CiAgICAgICAgZG91YmxlIHJvb3Qscm9vdDI7CiAgICAgICAgbG9uZyBjb3VudGVyID0gMTsKICAgICAgICBTdHJpbmdbXSBzdHJpbmc7CiAgICAgICAgCndoaWxlIChjb3VudGVyPD10KXsKICAgICBzdHJpbmcgPSByZWFkLnJlYWRMaW5lKCkuc3BsaXQoIiAiKTsKICAgICBuID0gTG9uZy5wYXJzZUxvbmcoc3RyaW5nWzBdKTsKICAgICBtID0gTG9uZy5wYXJzZUxvbmcoc3RyaW5nWzFdKTsKICAgICBzdGFydCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwoKICAgICAKICAgICBob2xkZXIgPSBuOwogICAgIHEgPSAwOwogICAgIGkgPSAwOwogICAgIFByaW1lc1swXSA9IDI7CiAgICAgYyA9IDI7CiAgICAgZmxhZyA9IHRydWU7CiAgICAgICAgCiAgICAgICAgbiA9IChpbnQpTWF0aC5zcXJ0KDEwMDAwMDAwMDApOwogICAgICAgIGlmIChob2xkZXIgPT0gMSl7CiAgICAgICAgICAgIGMrKzsKICAgICAgICAgICAgbiA9IDI7CiAgICAgICAgICAgIGhvbGRlciA9IDI7CiAgICAgICAgfQogICAgICAgICAgCiAgICAgICAgIAogICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgCiAgICAgICAgd2hpbGUgKGMgPD0gbil7CiAgICAgICAgICAgIHJvb3QgPSAoaW50KU1hdGguc3FydChjKTsKICAgICAgICAgICAgd2hpbGUgKCBxIDw9IGkgJiYgUHJpbWVzW3FdIDw9IHJvb3QpewogICAgICAgICAgICAgICAgdGVzdGVyID0gYyAlIFByaW1lc1txXTsKICAgICAgICAgICAgICAgIGlmICh0ZXN0ZXIgPT0gMCl7CiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZmxhZyA9PSB0cnVlKXsKICAgICAgICAgICAgICAgIFByaW1lc1tpKzFdID0gYzsKICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBjKys7CiAgICAgICAgICAgIHEgPSAwOwogICAgICAgICAgICBmbGFnID0gdHJ1ZTsgICAKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgYyA9IGhvbGRlcjsKICAgICAgICBxID0gMDsKICAgICAgICBmbGFnID0gdHJ1ZTsKICAgICAgICByb290ID0gMDsKICAgICAgICAKICAgICAgIAogICAgICAgIAogICAgIHdoaWxlICggYyA8IG0pewogICAgICAgICAgICByb290ID0gTWF0aC5zcXJ0KGMpOwogICAgICAgICAgICBxID0gMDsKICAgICAgICB3aGlsZSAobiA8PSByb290KXsKICAgICAgICAgICAgICAgIHdoaWxlICggcSA8PSBpKXsKICAgICAgICAgICAgICAgIHRlc3RlciA9IG4gJSBQcmltZXNbcV07CiAgICAgICAgICAgICAgICBpZiAodGVzdGVyID09IDApewogICAgICAgICAgICAgICAgICAgIGZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsgICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHErKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICggZmxhZyA9PSB0cnVlKXsKICAgICAgICAgICAgICAgIFByaW1lc1tpKzFdID0gbjsKICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBxID0gMDsKICAgICAgICAgICAgZmxhZyA9IHRydWU7ICAgCiAgICAgICAgICAgIG4rKzsKICAgICAgICB9CiAgICAgICAgbiA9IGhvbGRlcjsKICAgICAgICBxID0gMDsKICAgICAgICAgICB3aGlsZSAoIHEgPD0gaSAmJiBQcmltZXNbcV0gPD0gcm9vdCl7CiAgICAgICAgICAgICAgIGlmICggYyA9PSAyKXsKICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjKTsKICAgICAgICAgICAgICAgICAgIHN1bSsrOwogICAgICAgICAgICAgICAgICAgZmxhZyA9IGZhbHNlOwogICAgICAgICAgICAgICB9LyplbHNlIGlmKGMlMj09MCB8fCBjJTM9PTB8fGMlNT09MCl7CiAgICAgICAgICAgICAgICAgICBmbGFnPWZhbHNlOwogICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgKiAKICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgIGVsc2UgaWYgKCBjICUgUHJpbWVzW3FdID09IDApewogICAgICAgICAgICAgICAgICAgIGZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHErKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZmxhZyA9PSB0cnVlKXsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGMpOwogICAgICAgICAgICBzdW0rKzsgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgYysrOwogICAgICAgICAgICBmbGFnID0gdHJ1ZTsKICAgICAgICAgICAgcSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG5FeGVjdXRpb24gdGltZTogIiArIChlbmQtc3RhcnQpICsgIiBtaWxsaXNlY29uZHMuXG4iICsgc3VtKTsKICAgIGNvdW50ZXIrKzsKICAgIAogICAgCiAgICAgCgogICAgCn0KfQp9Cg==