#include <bits/stdc++.h>
using namespace std;
const int N = 3000020, M = 120;
int L, R, p, ans, tot, cnt, g[N], f[N], P[M];
bool buc[N], vis[M];
void dfs(int k, int res) {
  g[++cnt] = res;
  for (int i = k; i <= tot; i++) {
    if (1ll * P[i] * res <= 1ll * R) dfs(i, res * P[i]);
  }
}
signed main() {
  memset(f, 0x3f, sizeof(f));
  cin >> L >> R >> p;
  for (int i = 2; i <= p; i++) {
    if (!vis[i]) P[++tot] = i;
    for (int j = 1; j <= tot && i * P[j] <= p; j++) {
      vis[i * P[j]] = 1;
      if (i % P[j] == 0) break;
    }
  }
  dfs(1, 1);
  sort(g + 1, g + cnt + 1);
  f[1] = 0;
  for (int i = 2; i <= p; i++) {
    int j = 1;
    for (int k = 1; k <= cnt; k++) {
      while (j <= cnt && 1ll * g[j] != 1ll * g[k] * i) j++;
      if (j == cnt + 1) break;
      f[j] = min(f[j], f[k] + 1);
      if (f[j] + i <= p && g[j] >= L && !buc[j]) buc[j] = 1, ans++;
    }
  }
  cout << ans;
  return 0;
}
