#include <bits/stdc++.h>
using namespace std;
const int sz = 10000000, p = 3000017;
int l, r, n, m, f[sz + 3000000], tot, ans;
struct data {
  int x, id;
  data *nxt;
} pool[3000000], *tp = pool, *fst[3000100];
vector<int> a[110];
int find(int x) {
  if (x <= sz) return x;
  int t = x % p;
  for (data *i = fst[t]; i; i = i->nxt)
    if (i->x == x) return i->id;
  *tp = (data){x, ++tot, fst[t]}, fst[t] = tp++;
  return tot;
}
int main() {
  scanf("%d%d%d", &l, &r, &n);
  f[1] = 0, tot = sz, a[0].push_back(1);
  for (int i = 2; i <= n; ++i)
    for (int j = 0; j <= n - i - 1; ++j)
      for (int k = 0; k < a[j].size();) {
        int w = f[find(a[j][k])];
        if (w != j || a[j][k] > r / i) {
          a[j][k] = a[j][a[j].size() - 1], a[j].pop_back();
          continue;
        }
        int x = a[j][k] * i, t = find(x);
        if (!f[t]) ans += x >= l, f[t] = 1 << 30;
        if (f[t] > w + 1) a[f[t] = w + 1].push_back(x);
        ++k;
      }
  printf("%d\n", ans);
  return 0;
}
