L, R = map(int, input().split()) if R == 1: print(1) exit() # 素数リスト作成 def PrimeList(N): P = [1] * (N + 1) P[0] = P[1] = 0 for i in range(2, N + 1): if P[i]: for j in range(i + i, N + 1, i): P[j] = 0 PL = [] for i in range(N + 1): if P[i] == 1: PL.append(i) return PL PL = PrimeList(10 ** 6) A = list(range(L, R + 1)) for p in PL: p2 = p * p for i in range(-(-L // p) * p - L, R // p * p - L + 1, p): j = 0 while A[i] % p == 0: if j == 1: A[i] = -1 else: A[i] //= p j += 1 def check(x, y): return x >= y * y for i in range(R - L + 1): a = A[i] if a > 1: lb = 0 ub = R while ub - lb > 1: mid = (ub + lb) // 2 if check(a, mid): lb = mid else: ub = mid if a == lb * lb: A[i] = -1 ans = 0 for a in A: if a > 0: ans += 1 print(ans)