#include <iostream>
using namespace std;
int f[10000005];
int prime[1000005];
int v[1000005];
int num;
int a,b,p;
void ol(int n){
for(int i=2;i<=n;++i){
if(v[i]==0) prime[++num]=i;
for(int j=1;j<=num&&i*prime[j]<=n;++i){
v[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
}
inline int find(int x){
if(f[x]==x) return x;
return f[x]=find(f[x]);
}
inline bool finnd(int x,int y){
for(int i=1;i<=num;++i){
if(x%prime[i]==0&&y%prime[i]==0&&prime[i]>=p){
return 1;
}
}
return 0;
}
int main(){
cin>>a>>b>>p;
ol(b);
for(int i=a;i<=b;++i) f[i]=i;
int ans=0;
for(int i=a;i<b;++i){
for(int j=i+1;j<=b;++j){
if(find(f[i])==find(f[j])) continue;
if(finnd(i,j)==1){
f[find(i)]=find(j);
}
}
}
for(int i=a;i<=b;++i){
if(f[i]==i) ans++;
}
cout<<ans;
return 0;
}