#include <bits/stdc++.h>
using namespace std;
int main() {
  long long prost[60];
  int pred = 0;
  for (int i = 2; pred < 50; i++) {
    bool s = 0;
    for (int k = 2; k < i; k++) {
      if (i % k == 0) {
        s = 1;
      }
    }
    if (s == 0) {
      prost[pred] = i;
      pred++;
    }
  }
  double pog = 10e-8;
  int Q;
  cin >> Q;
  for (int tim = 0; tim < Q; tim++) {
    long long l, r;
    cin >> l >> r;
    long double l1, r1;
    l1 = l;
    r1 = r;
    long long s[60];
    for (int i = 0; i < 60; i++) {
      s[i] = 0;
    }
    int j = 0;
    for (int i = 2; i < 70; i++) {
      if (i % 4 == 0) {
        continue;
      }
      if (i % 9 == 0) {
        continue;
      }
      long double rt = 1 / (1.0 * i);
      long double y = pow(r1, rt);
      long double x = pow(l1, rt);
      long long x1 = x;
      long long y1 = y;
      if (pow(x1, i) + pog < l) x1++;
      if (pow(y1 + 1, i) - pog <= r) y1++;
      if (x1 == 1) {
        x1++;
      }
      if (y1 >= x1) {
        s[i] += y1 - x1 + 1;
      }
      if (y1 < 2) {
        j = i;
        break;
      }
    }
    long long ans = 0;
    for (int i = 0; prost[i] < j; i++) {
      ans += s[prost[i]];
    }
    for (int i = 0;; i++) {
      for (int k = i + 1;; k++) {
        int f = prost[i] * prost[k];
        if (f > j) {
          break;
        }
        ans -= s[f];
      }
      if (prost[i] * prost[i + 1] > j) {
        break;
      }
    }
    int f = 6;
    for (int i = 2;; i++) {
      if (prost[i] * 6 > j) {
        break;
      }
      ans += s[prost[i] * 6];
    }
    if (l == 1) ans++;
    cout << ans << endl;
  }
  return 0;
}
