#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, o = 1;
  char ch = getchar();
  while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
  if (ch == '-') o = -1, ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return x * o;
}
const int N = 105;
const int M = 5000005;
int l, r, p, tot, n, ans;
int v[N], prime[N];
int a[M], visit[M], f[M];
inline void get_prime() {
  for (int i = 2; i <= p; ++i) {
    if (!v[i]) {
      v[i] = i;
      prime[++tot] = i;
    }
    for (int j = 1; j <= tot; ++j) {
      if (prime[j] * i > p || prime[j] > v[i]) break;
      v[prime[j] * i] = prime[j];
    }
  }
}
inline void dfs(int num, long long now) {
  if (num > tot) return;
  dfs(num + 1, now);
  while (1) {
    now *= prime[num];
    if (now > r) break;
    a[++n] = now;
    dfs(num + 1, now);
  }
}
int main() {
  l = read();
  r = read();
  p = read();
  get_prime();
  dfs(1, 1);
  a[++n] = 1;
  sort(a + 1, a + n + 1);
  f[1] = 0;
  for (int i = 2; i <= n; ++i) f[i] = 1e9;
  for (int i = 2; i <= p; ++i) {
    for (int j = 1, k = 1; j <= n; ++j) {
      while (k <= n && a[j] * i > a[k]) ++k;
      if (k > n) break;
      if (a[j] * i < a[k]) continue;
      f[k] = min(f[k], f[j] + 1);
      if (visit[k] || f[k] + i > p || a[k] < l) continue;
      visit[k] = 1;
      ++ans;
    }
  }
  printf("%d\n", ans);
  return 0;
}
