RT,qwq
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int fa[maxn],f[maxn];
int Find(int x) {
if(x==fa[x]) return x;
return fa[x]=Find(fa[x]);
}
int q(int op,int l) {
int u=Find(op),v=Find(l);
if(u!=v) fa[u]=v;
}
int n,m,p;
int main() {
scanf("%d%d%d",&n,&m,&p);
for(int i=n;i<=m;i++) {
fa[i]=i;
}
f[1]=1;
for (int i=2;i<=m/2;i++) {
int k=i;
if(f[k]==0) {
while (k+i<=m) {
k+=i;
f[k]=1;
}
}
}
for(int i=p;i<=m;i++) {
int op,l;
if(f[i]==0) {
l=i;
op=0;
while(l<=m) {
if(l>=n) {
if(op==0) op=l;
q(op,l);
l+=i;
}
}
}
}
int ans=0;
for(int i=n;i<=m;i++) {
if(fa[i]==i) ans++;
}
printf("%d",ans);
return 0;
}