#include<stdlib.h>
#include<math.h>
int factor=0;
int DivideAndAdd1(int p);
int DivideAndAdd2(int p);
int main()
{
int begin,end,i,j;
int total=0;
int a[100001]={0};
scanf("%d%d",&begin,&end);
if(begin==0) begin=1;//防止把自己算进去
//因数预处理,优化算法,不打表
for(i=2;i<=end-begin;i++)//把小因子先过一遍
{
if(begin%i==0) j=0;
else j=i-begin%i;
for(;j<=end-begin;j+=i)
{
if(i<(j+begin)/i)
{
a[j]+=i;
a[j]+=((j+begin)/i);
}
else if(i==(j+begin)/i) a[j]+=i;
}
}
factor=end-begin;
if(factor==0) factor=1;
for(i=0;i<=end-begin;i++)//从小往大搜
{
a[i]++;//1是因子
a[i]+=DivideAndAdd1(begin+i);
if(a[i]<=begin+i) continue;
if(begin+i==DivideAndAdd2(a[i]))
{
total++;
// printf("%d\n",begin+i);
}
}
printf("%d",total);
system("pause");
return 0;
}
int DivideAndAdd1(int p)//分解并且加和
{
int t=(int)(sqrt(p)+0.3);
if(t*t==p&&p%2==1) return 0;
int total=0,i,j;
for(i=factor+1;i<=sqrt(p)+0.3;i++)
{
if(p%i==0)
{
total+=i;
if(i*i!=p)
total+=(p/i);
}
}
return total;
}
int DivideAndAdd2(int p)//分解并且加和
{
int t=(int)(sqrt(p)+0.3);
if(t*t==p&&p%2==1) return 0;
int total=1,i,j;
for(i=2;i<=sqrt(p)+0.3;i++)
{
if(p%i==0)
{
total+=i;
if(i*i!=p)
total+=(p/i);
}
}
return total;
}