#include<bits/stdc++.h>
using namespace std;
int f[100010];
int s[100010];
bool v[100010];
vector<int>g;
int n,m,k;
int cnt;
int next(int x){
if(f[x]==x){
return x;
}
f[x]=next(f[x]);
return f[x];
}
int make(int x,int y){
int fx=next(x);
int fy=next(y);
if(fx!=fy){
cnt--;
if(s[fx]<s[fy]){
f[fx]=fy;
s[fy]+=s[fx];
}else{
f[fy]=fx;
s[fx]+=s[fy];
}
}
}
int shai(){
v[1]=1;
for(int i=2;i<=m;i++){
if(v[i]==0){
g.push_back(i);
for(int j=0;i*j<=m;j++){
v[j*i]=1;
}
}
}
}
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=0;i<=100000;i++){
f[i]=i;
s[i]=1;
}
shai();
cnt=m-n+1;
for(int i=0;i<g.size();i++){
if(g[i]<k){
continue;
}
for(int j=n/g[i];j*g[i]<=m;j++){
if(j*g[i]<n){
continue;
}
for(int h=n/g[i];h*g[i]<=m;h++){
if(h*g[i]<n||j==h){
continue;
}
make(j*g[i],h*g[i]);
}
}
}
printf("%d",cnt);
return 0;
}