#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long ll;
ll read();
ll l,r,p;
ll f[N];
vector <ll> pri;
bool vis[N];
ll find(ll x)
{
if(f[x]==x) return x;
return f[x]=find(f[x]);
}
void init()
{
for(ll i=2;i<=r;i++)
{
if(!vis[i]) pri.push_back(i);
for(auto x:pri)
{
if(x*i>r) break;
vis[x*i]=1;
if(i%x) break;
}
}
}
int main()
{
l=read(); r=read(); p=read();
init();
for(ll i=1;i<=r;i++) f[i]=i;
for(auto x:pri)
{
if(x<p) continue;
ll i=1;
while(x*i<l) i++;
for(ll j=i+1;x*j<=r;j++) f[find(x*i)]=find(x*j);
}
ll cnt=0;
for(int i=l;i<=r;i++)
if(f[i]==i) cnt++;
printf("%lld",cnt);
return 0;
}
ll read()
{
ll x=0,f=1; char ch=getchar();
while(ch<'0' || ch>'9')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}