l, r = map(int, input().split()) # union-find # xの根を求める def find(x): if par[x] < 0: return x else: par[x] = find(par[x]) return par[x] # xとyの属する集合の併合 def unite(x, y): x = find(x) y = find(y) if x == y: return False else: # sizeの大きい方をxとする if par[x] > par[y]: x, y = y, x par[x] += par[y] par[y] = x return True # xとyが同じ集合か判定 def is_same(x, y): return find(x) == find(y) def size(x): return -par[find(x)] # 初期化 # 根なら-size、子なら親の頂点 par = [-1] * (r - l + 1) cnt = 0 # cost 0で貼ることのできる辺を処理する for i in range(l, r + 1): j = 2 * i while j < r + 1: if unite(i - l, j - l): cnt += 1 j += i print(r - l + -cnt)