#include <bits/stdc++.h>
using namespace std;
long long l, r, p;
bool npr[105];
vector<long long> vec;
int n;
int dp[(int)5e6];
int ans;
bool vis[(int)5e6];
int main() {
  cin >> l >> r >> p;
  memset(npr, 0, sizeof(npr));
  for (int i = 2; i <= p; i++) {
    for (int j = i * i; !npr[i] && j <= p; j += i) {
      npr[j] = true;
    }
  }
  vec.push_back(1);
  for (int i = 2; i <= p; i++) {
    if (npr[i]) continue;
    long long tmp;
    n = vec.size();
    for (int j = 0; j < n; j++) {
      tmp = vec[j];
      while (tmp * i <= r) {
        vec.push_back(tmp * i);
        tmp *= i;
      }
    }
  }
  sort(vec.begin(), vec.end());
  n = vec.size();
  ans = 0;
  memset(dp, 0x3f, sizeof(dp));
  memset(vis, false, sizeof(vis));
  dp[0] = 0;
  for (int i = 1; i <= p; i++) {
    int pos = 0;
    for (int j = 0; j < n; j++) {
      while (pos < n && vec[pos] < vec[j] * i) pos++;
      if (pos == n) break;
      if (vec[pos] == vec[j] * i) {
        dp[pos] = min(dp[pos], dp[j] + 1);
        if (!vis[pos] && dp[pos] + i <= p && vec[pos] >= l) {
          vis[pos] = true;
          ans++;
        }
      }
    }
  }
  cout << ans << endl;
  return 0;
}
