#include <bits/stdc++.h>
using namespace std;
const int Max_P(105);
const int Max_N(4000050);
int L, R, P, N, V[Max_N];
int ps, AllP[Max_P];
bool Prime[Max_P];
void dfs(const int &now, const int &pos) {
  if (pos == ps + 1) {
    V[++N] = now;
    return;
  }
  for (long long int tmp = 1LL; (now * 1LL) * tmp <= (R * 1LL);
       tmp *= AllP[pos])
    dfs(now * tmp, pos + 1);
}
int Ans[Max_N], F[Max_N];
inline void update(int &a, const int &b) { a = min(a, b); }
int main() {
  scanf("%d%d%d", &L, &R, &P);
  memset(Prime, true, sizeof(Prime)), Prime[0] = Prime[1] = false;
  for (int i = 2; i <= P; ++i) {
    if (Prime[i]) AllP[++ps] = i;
    for (int j = i * i; j <= P; j += i) Prime[j] = false;
  }
  dfs(1, 1), sort(V + 1, V + 1 + N);
  memset(F, 0X3F, sizeof(F)), memset(Ans, 0X3F, sizeof(Ans));
  Ans[0] = 0, Ans[1] = F[1] = 0;
  for (int b = 1, now = 1, last = 0; b <= P; ++b, now ^= 1, last ^= 1)
    for (int a = 1, j = 1; a <= N; ++a) {
      if ((V[a] * 1LL) * (b * 1LL) <= (R * 1LL)) {
        while (j <= N && V[a] * b > V[j]) ++j;
        if (V[j] == V[a] * b) update(F[j], F[a] + 1);
      }
      update(Ans[a], F[a] + b);
    }
  for (int i = 1; i <= N; ++i)
    if (L <= V[i] && V[i] <= R && Ans[i] <= P) ++Ans[0];
  printf("%d", Ans[0]);
  return 0;
}
