#include <bits/stdc++.h>
using namespace std;
int f[100005],vis[100005],pr[100005];
int find(int x){
if(x!=f[x]) f[x]=find(f[x]);
return f[x];
}
bool is_prime(int x){
if(x==0||x==1) return false;
for(int i=2;i<=sqrt(x);i++){
if(x%i==0){
return false;
}
}
return true;
}
int main(){
int n,m,p;
cin>>n>>m>>p;
int s=m-n+1;
for(int i=n;i<=m;i++){
f[i]=i;
}
int cnt=0;
for(int i=1;i<=m;i++){
if(is_prime(i)){
pr[++cnt]=i;
}else{
vis[i]=1;
}
}
for(int i=1;i<=cnt;i++){
if(pr[i]>=p){
int x;
if(n%pr[i]==0){
x=n;
}else{
x=n+pr[i];
}
for(int j=x+pr[i];j<=m;j+=pr[i]){
if(find(x)!=find(j)){
f[j]=x;
s--;
}
}
}
}
cout<<s;
}