#include "bits/stdc++.h"
using namespace std;
#define dbg(var) cout<<#var<<"="<<var<<" "
#define nl cout<<"\n"
#define fr(i,n) for(int i=0;i<n;i++)
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define fast ios::sync_with_stdio(false);cin.tie(0);
#define vi vector<int>
#define vvi vector<vi>
#define pb push_back
#define fa(v) for(auto &i:v)
#define all(v) v.begin(),v.end()
#define sz(v) (int)(v.size())
#define int long long
const int N = 1e6 + 10;
vector<int> pr;int d[N+10];
void sieve()
{
for(int i = 2; i <= N; i++)
{
if (d[i] == 0)
{
d[i] = i;
pr.push_back(i);
}
for(auto x : pr)
{
if (x > d[i] || x * i > N)
break;
d[i * x] = x;
}
}
}
////////////// debugger class starts from here/////
void __print(int x) {cout << x;}
void __print(long x) {cout << x;}
void __print(unsigned x) {cout << x;}
void __print(unsigned long x) {cout << x;}
void __print(unsigned long long x) {cout << x;}
void __print(float x) {cout << x;}
void __print(double x) {cout << x;}
void __print(long double x) {cout << x;}
void __print(char x) {cout << '\'' << x << '\'';}
void __print(const char *x) {cout << '\"' << x << '\"';}
void __print(const string &x) {cout << '\"' << x << '\"';}
void __print(bool x) {cout << (x ? "true" : "false");}
template<typename T, typename V>
void __print(const pair<T, V> &x) {cout << '{'; __print(x.first); cout << ','; __print(x.second); cout << '}';}
template<typename T>
void __print(const T &x) {int f = 0; cout << '{'; for (auto &i: x) cout << (f++ ? "," : ""), __print(i); cout << "}";}
void _print() {cout << "]\n";}
template <typename T, typename... V>
void _print(T t, V... v) {__print(t); if (sizeof...(v)) cout << ", "; _print(v...);}
#ifndef ONLINE_JUDGE
#define debug(x...) cout << "[" << #x << "] = ["; _print(x)
#else
#define debug(x...)
#endif
/////// debugger class ends here /////////////
int32_t main()
{
sieve();
int a,b,n;
cin >> a >> b >> n;
pair<int,int> tot_div[b - a + 5];
rep(i,a,b){
int at = i - a;
tot_div[at].first = i;
tot_div[at].second = 1;
}
for(int x: pr){
if(x > b) break;
int frst = (a + x - 1)/x * x;
for(int i = (a + x - 1)/x * x; i <= b; i += x){
int at = i - a;
if(at < 0) continue;
int cnt = 0;
while(tot_div[at].first % x == 0){
cnt++;
tot_div[at].first /= x;
}
tot_div[at].second *= (1 + cnt);
}
}
int ans = 0;
rep(i,a,b){
int at = i - a;
if(tot_div[at].first > 1) tot_div[at].second *= 2;
ans += (tot_div[at].second == n);
// debug(i,tot_div[at].first, tot_div[at].second);
}
cout << ans;
}