#include <bits/stdc++.h>
using namespace std;
const int prime[] = {2,  3,  5,  7,  11, 13, 17, 19,        23,
                     29, 31, 37, 41, 43, 47, 53, 59,        61,
                     67, 71, 73, 79, 83, 89, 97, 1987654321};
vector<int> canMake;
int l, r, p;
int dvd(int n, int q) {
  int ret = 0;
  while (n % q == 0) {
    ret++;
    n /= q;
  }
  return ret;
}
int main() {
  scanf("%d%d%d", &l, &r, &p);
  int maxPrimeIndex = 0;
  while (prime[maxPrimeIndex] < p) maxPrimeIndex++;
  if (prime[maxPrimeIndex] > p) maxPrimeIndex--;
  canMake.push_back(1);
  int n;
  long long tmp;
  for (int i = 0; i <= maxPrimeIndex; i++) {
    n = canMake.size();
    for (int j = 0; j < n; j++) {
      tmp = canMake[j] * prime[i];
      if (tmp > r) break;
      while (tmp <= r) {
        canMake.push_back(tmp);
        tmp *= prime[i];
      }
    }
    sort(canMake.begin(), canMake.end());
  }
  const int m = canMake.size();
  vector<int> dp(m, 1987654321);
  vector<bool> check(m, false);
  int ans = 0;
  dp[0] = 0;
  for (int i = 2; i <= p; i++) {
    int k = 0;
    for (int j = 0; j < m; j++) {
      while (k < m && canMake[k] != canMake[j] * i) k++;
      if (k == m) break;
      if (dp[k] > dp[j] + 1) dp[k] = dp[j] + 1;
      if (!check[k] && canMake[k] >= l && dp[k] + i <= p) {
        ans++;
        check[k] = true;
      }
    }
  }
  printf("%d", ans);
}
