--*/
#include <iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
using namespace std;
int vis[1000000+5];
int prime[1000000+5];
int squre[10000000+5];
int k,n,M;
void prepare(){
memset(vis,0,sizeof(vis));
for(int i=2;i<=10000;i++)if(!vis[i])
for(int j=i*i;j<=1000000;j+=i)vis[j]=1;
for(int i=2;i<=1000000;i++){
if(vis[i]!=1){
prime[k++]=i;
}
}
memset(squre,0,sizeof(squre));
for(int i=0;prime[i]*prime[i]<=M;i++){
int d=prime[i]*prime[i];
for(int j=1;j*d<=M;j++){
if(j*d>=n){
squre[j*d-n]=1;
}
}
}
int ans=0;
for(int i=0;i<=M-n;i++){
if(squre[i]==0){
ans++;
}
}
printf("%d",ans);
}
int main() {
scanf("%d",&n);
scanf("%d",&M);
prepare();
return 0;
}