#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std;
int main()
{
long long a, b;
while(~scanf("%I64d%I64d",&a,&b))
{
long long i=2;
long long sum=b-a+1;
while(i*i*i<=b)
{
if(i*i*i<a)
sum+=(b/(i*i)-i+1)-((a-1)/(i*i)-i+1);//这个是分别计算b前边(包括b)有多少个i和a前边有多少个i
/*else if(i*i*i==a)
sum+=(b/(i*i)-i+1)-(a/(i*i)-i);*/
else sum+=(b/(i*i)-i+1);
//printf("%lld %lld\n",i,sum);
i++;
}
printf("%I64d\n",sum);
}
}
#include<string.h>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std;
int main()
{
long long a, b;
while(~scanf("%I64d%I64d",&a,&b))
{
long long i=2;
long long sum=b-a+1;
while(i*i*i<=b)
{
if(i*i*i<a)
sum+=(b/(i*i)-i+1)-((a-1)/(i*i)-i+1);//这个是分别计算b前边(包括b)有多少个i和a前边有多少个i
/*else if(i*i*i==a)
sum+=(b/(i*i)-i+1)-(a/(i*i)-i);*/
else sum+=(b/(i*i)-i+1);
//printf("%lld %lld\n",i,sum);
i++;
}
printf("%I64d\n",sum);
}
}