#include <bits/stdc++.h>
using namespace std;
const int maxn = (int)(3e6 + 123);
const long long inf = (long long)(1e9 + 7);
const int base = (int)(1e9 + 7);
const int mod = (int)(1e9 + 7);
const double eps = (double)(1e-9);
int l, r, ans, a[maxn], N, dL[101], lp[101];
short P, p[29], pn, dp[maxn];
unordered_map<int, int> was;
vector<int> ind[26];
bool u[maxn], used[maxn], us[maxn];
void resheto(int n) {
  for (int i = 3; i * i <= n; i += 2)
    if (!u[i])
      for (int j = i * i; j <= n; j += 2 * i) u[j] = 1;
  p[pn++] = 2;
  for (int i = 3; i <= n; i += 2)
    if (!u[i]) p[pn++] = i;
}
int main() {
  ios_base ::sync_with_stdio(false);
  resheto(100);
  cin >> l >> r >> P;
  a[N++] = 1;
  for (short i = 0; i < pn; ++i) {
    dL[i] = N;
    for (int j = 0; j < N; ++j) {
      if (a[j] > r / p[i]) continue;
      long long x = a[j] * p[i];
      a[N++] = x;
    }
  }
  sort(a, a + N);
  memset(dp, -1, sizeof dp);
  dp[0] = 0;
  for (int i = 0; i < pn; ++i) {
    for (int j = p[i]; j <= 100; j += p[i]) lp[j] = i;
  }
  for (short i = 2; i <= P; ++i) {
    int id = 0;
    for (int j = 0; j < N; ++j) {
      if (a[j] / i * i != a[j]) continue;
      if (dp[j] != -1)
        dp[j] = min(dp[j], short(dp[id] + 1));
      else if (dp[id] != -1) {
        dp[j] = short(dp[id] + 1);
      }
      id++;
      if (dp[j] != -1 && !used[j] && a[j] >= l && a[j] <= r && P - dp[j] >= i) {
        ans++;
        used[j] = 1;
      }
    }
  }
  cout << ans;
  return 0;
}
