#include <bits/stdc++.h>
using namespace std;
inline int Get() {
  int res = 0, q = 1;
  char ch = getchar();
  while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
  if (ch == '-') q = -1, ch = getchar();
  while (ch >= '0' && ch <= '9') res = res * 10 + ch - '0', ch = getchar();
  return res * q;
}
const double eps = 1e-12;
const int oo = (int)2e9, mod = (int)1e9 + 7;
const long long INF = (long long)1e17;
const int N = (int)3e6, M = 100;
typedef int arr[N + 10];
arr a, f;
int l, r, p, n, m;
int prm[M + 10];
bool pri[M + 10], c[N + 10];
void Prepare() {
  for (int i = (2), end = (p); i <= end; ++i) {
    if (!pri[i]) prm[++m] = i;
    for (int j = (1), end = (m); j <= end; ++j) {
      if (prm[j] * i > p) break;
      pri[prm[j] * i] = 1;
      if (i % prm[j] == 0) break;
    }
  }
  a[++n] = 1, f[n] = 0;
  for (int i = (1), end = (m); i <= end; ++i) {
    for (int j = 1; j <= n; ++j)
      if ((long long)a[j] * (long long)prm[i] <= (long long)r)
        a[++n] = a[j] * prm[i], f[n] = oo;
  }
  sort(a + 1, a + n + 1);
}
int main() {
  scanf(
      "%d"
      "%d"
      "%d"
      "\n",
      &l, &r, &p);
  Prepare();
  int ans = 0;
  for (int i = (2), end = (p); i <= end; ++i) {
    int x = 1;
    for (int j = (1), end = (n); j <= end; ++j)
      if (a[j] % i == 0) {
        if (f[x] + 1 < f[j] && a[x] * i == a[j]) f[j] = f[x] + 1;
        if (i + f[j] <= p && !c[j] && a[j] >= l) ++ans, c[j] = 1;
        ++x;
      }
  }
  printf(
      "%d"
      "\n",
      ans);
  return 0;
}
