#include <bits/stdc++.h>
const int oo = ~0u >> 2;
int l, r, p;
int num;
int pri[233], cnt;
int a[3000005], f[3000005];
bool ans[3000005];
bool vis[233];
int top;
void dfs(int k, int now) {
  if (now > r) return;
  if (k == cnt + 1) {
    a[++top] = now;
    return;
  }
  while (233) {
    dfs(k + 1, now);
    if ((long long)now * pri[k - 1] > r) return;
    now *= pri[k - 1];
  }
}
void init() {
  for (int i = (2), __ = (p); i <= __; ++i) {
    if (!vis[i]) {
      pri[cnt++] = i;
    }
    for (int j = (0), __ = (cnt); j < __; ++j) {
      if ((long long)i * pri[j] > p) break;
      vis[i * pri[j]] = 1;
      if (i % pri[j] == 0) break;
    }
  }
  dfs(1, 1);
  std::sort(a + 1, a + top + 1);
}
void dp() {
  for (int i = (2), __ = (top); i <= __; ++i) f[i] = oo;
  int pos;
  for (int i = (2), __ = (p); i <= __; ++i) {
    pos = 0;
    for (int j = (1), __ = (top); j <= __; ++j) {
      if (a[j] % i == 0) {
        while (a[j] / i >= a[pos + 1] && pos <= top) ++pos;
        f[j] = std::min(f[j], f[pos] + 1);
        if (i + f[j] <= p && !ans[j] && a[j] >= l) num++, ans[j] = 1;
      }
    }
  }
}
int main() {
  scanf("%d%d%d", &l, &r, &p);
  init();
  dp();
  printf("%d\n", num);
  return 0;
}
