#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
const int inf = 0x3f3f3f3f, N = 5000010;
int n, l, r, k, tot, p, ans, a[N], pri[N], f[N];
bool pd[N], ff[N];
inline void read(int &x) {
  char c = getchar();
  int b = 1;
  for (; c < '0' || c > '9'; c = getchar())
    if (c == '-') b = -1;
  for (x = 0; c >= '0' && c <= '9'; x = x * 10 + c - '0', c = getchar())
    ;
  x = x * b;
}
inline void dfs(int u, int v) {
  a[++n] = u;
  for (int i = (v); i <= (tot); i++)
    if (u > r / pri[i])
      return;
    else
      dfs(u * pri[i], i);
}
int main() {
  read(l);
  read(r);
  read(p);
  for (int i = (2); i <= (p - 1); i++) {
    if (!pd[i]) pri[++tot] = i;
    for (int j = 1; j <= tot && pri[j] * i < p; j++) {
      pd[i * pri[j]] = 1;
      if (!(i % pri[j])) break;
    }
  }
  dfs(1, 1);
  sort(a + 1, a + n + 1);
  memset(f, 127 / 2, sizeof(f));
  f[1] = 0;
  for (int i = (2); i <= (p - 1); i++)
    for (int j = 1, k = 1; j <= n; j++)
      if (!(a[j] % i)) {
        while (a[k] * i < a[j]) k++;
        if (f[k] + 1 < f[j]) f[j] = f[k] + 1;
        if (f[j] + i <= p) ff[j] = 1;
      }
  for (int i = (1); i <= (n); i++)
    if (ff[i] && a[i] >= l) ans++;
  printf("%d\n", ans);
  return 0;
}
