#include <bits/stdc++.h>
using namespace std;
bitset<300000005> s;
int flag[20005], pri[20005], cnt, l, r, ans;
void mp(int n) {
  for (int i = 2; i <= n; i++) {
    if (!flag[i]) pri[++cnt] = i;
    for (int j = 1; j <= cnt && i * pri[j] <= n; j++) {
      flag[i * pri[j]] = 1;
      if (i % pri[j] == 0) break;
    }
  }
}
int main() {
  mp(20000);
  scanf("%d%d", &l, &r);
  for (int i = 1; i <= cnt; i++) {
    int a = (l - 1) / pri[i] + 1, b = r / pri[i];
    for (int j = a; j <= b; j++)
      if (j > 1) s.set(j * pri[i]);
  }
  for (int i = 0; i <= r / 4; i++) {
    s.set(i * 4);
    s.set(i * 4 + 2);
    s.set(i * 4 + 3);
  }
  s.set(1);
  s.reset(2);
  for (int i = l; i <= r; i++) ans += !s[i];
  printf("%d", ans);
  return 0;
}
