#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma comment(linker, "/STACK:210000000")
using namespace std;
const int INF = 2e9 + 9;
const long long INF1 = 8e15 + 9;
const long long MAXN = 3e6 + 7;
const long long MAXN1 = 20;
const long long MAXN2 = 2e7;
const long long MOD = 998244353;
const long long MOD1 = 1e9 + 9;
const long long ALPH = 27;
const long long PW1 = 239;
const long long PW2 = 199;
const long long PW3 = 193;
const long long PW4 = 117;
const long double EPS = 1e-13;
const long long BLOCK = 116;
const long long BLOCK1 = 1 << 9;
void solve();
signed main() {
  srand('a' + 'l' + 'e' + 'x' + 'X' + '5' + '1' + '2');
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int q = 1;
  if (0) cin >> q;
  while (q--) solve();
}
vector<long long> prime;
vector<int> vec;
int dp[MAXN], dp1[MAXN];
void rec(int id, long long now, long long r) {
  if (id == prime.size()) return;
  for (long long i = 0, c = 1; now * c <= r; ++i, c *= prime[id]) {
    if (i != 0) vec.emplace_back(now * c);
    rec(id + 1, now * c, r);
  }
}
void solve() {
  for (int i = 2; i <= 100; ++i) {
    bool b = 1;
    for (int j = 2; j * j <= i && b; ++j) {
      b &= (i % j != 0);
    }
    if (b) prime.emplace_back(i);
  }
  int l, r, p;
  cin >> l >> r >> p;
  rec(0, 1, r);
  sort(vec.begin(), vec.end());
  fill(dp, dp + MAXN, INF);
  fill(dp1, dp1 + MAXN, INF);
  dp[0] = 0;
  for (int j = 2; j <= 100; ++j) {
    for (int i = 0, it = 0; i < vec.size(); ++i) {
      if (vec[i] % j == 0) {
        while (vec[it] * j <= vec[i]) ++it;
        dp[i + 1] = min(dp[i + 1], dp[it] + 1);
        dp1[i + 1] = min(dp1[i + 1], dp[i + 1] + j);
      }
    }
  }
  int ans1 = 0;
  for (int i = 0; i < vec.size(); ++i) {
    if (vec[i] >= l && dp1[i + 1] <= p) ++ans1;
  }
  cout << ans1;
}
