#include <stdio.h>
#include <iostream>
#include <cmath>
using namespace std;
int save[1000001] = {
0,
};
void checkfunc(unsigned long long start, unsigned long long end)
{
int a = end - start;
for (unsigned long long i = 2; i <= sqrt(end); i++)
{
unsigned long long tmp = pow(i, 2);
long double k = ceil((long double)start / (long double)tmp);
for (long long j = (long long)k; tmp * j <= end; j++)
{
save[tmp * j - start] = 1;
// cout << tmp * j << "true\n";
}
}
}
int main()
{
unsigned long long min, max;
unsigned long long cnt = 0;
cin >> min >> max;
checkfunc(min, max);
for (int i = 0; i <= max - min; i++)
{
if (save[i] == 1)
continue;
else
cnt++;
}
cout << cnt;
}