class BIT: ini = 0 def __init__(s, num): s.N = 1 while s.N <= num: s.N *= 2 s.T = [s.ini] * s.N def set(s, L): for i in range(len(L)): s.update(i, L[i]) def update(s, x, n): # xをnにする k = x + 1 s.T[k - 1] += n k += k & -k while k <= s.N: s.T[k - 1] += n k += k & -k def getV(s, x): # xまでの和(x含む) if x < 0: return 0 x += 1 ans = s.T[x - 1] x -= x & -x while x != 0: ans += s.T[x - 1] x -= x & -x return ans Q = int(input()) LR = [list(map(int, input().split())) for _ in range(Q)] N = 10 ** 6 + 1 seg = BIT(N) LRI = [[LR[i][0], LR[i][1], i] for i in range(Q)] LRI.sort(reverse = True) ans = [0] * Q re = N T = [0] * N for l, r, i in LRI: if l == 1: ans[i] = 1 continue for n in range(l, re): if T[n]: continue for j in range(n + n, N, n): if T[j] == 0: seg.update(j, 1) T[j] = 1 re = l a = seg.getV(r) - seg.getV(l - 1) ans[i] = r - l + 1 - a for a in ans: print(a)