#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
inline void smin(T &a, U b) {
  if (a > b) a = b;
}
template <typename T, typename U>
inline void smax(T &a, U b) {
  if (a < b) a = b;
}
int np, prime[101], flag[101];
int qb, q[2944731], d[2944731], ok[2944731], tp1[2944731], tp2[2944731],
    tp3[2944731];
int main() {
  int l, r, p;
  scanf("%d%d%d", &l, &r, &p);
  for (int i = 2; i < p; i++) {
    if (!flag[i]) prime[np++] = i;
    for (int j = 0; j < np && prime[j] * i < p; j++) {
      flag[i * prime[j]] = 1;
      if (i % prime[j] == 0) break;
    }
  }
  qb = 0;
  q[qb++] = 1;
  for (int i = 0; i < np; i++) {
    int rr, cnt = 0;
    long long mid = 1;
    for (int k = 0;; k++) {
      if (mid > r) break;
      for (int j = rr = 0; j < qb; j++) {
        if (mid * q[j] > r) break;
        tp1[rr++] = mid * q[j];
      }
      int ii = 0, jj = 0, kk = 0;
      while (ii < cnt && jj < rr)
        if (tp2[ii] < tp1[jj])
          tp3[kk++] = tp2[ii], ii++;
        else
          tp3[kk++] = tp1[jj], jj++;
      while (ii < cnt) tp3[kk++] = tp2[ii], ii++;
      while (jj < rr) tp3[kk++] = tp1[jj], jj++;
      for (cnt = kk, ii = 0; ii < cnt; ii++) tp2[ii] = tp3[ii];
      mid *= prime[i];
    }
    for (int k = 0; k < cnt; k++) q[k] = tp2[k];
    qb = cnt;
  }
  int ans = 0;
  for (int i = 0; i < qb; i++) d[i] = 0x3f3f3f3f;
  d[0] = 0;
  for (int i = 2; i < p; i++) {
    int k = 0;
    for (int j = 0;; j++) {
      int tmp = q[j] * i;
      while (k < qb && q[k] < tmp) k++;
      if (k == qb) break;
      if (d[k] > d[j] + 1) {
        d[k] = d[j] + 1;
        if (d[k] + i <= p) ok[k] = 1;
      }
    }
  }
  for (int i = 0; i < qb; i++)
    if (ok[i] && l <= q[i]) ans++;
  cout << ans << endl;
  return 0;
}
