//----->|try=0; while(!success) try++;|<------
//----->|Belief Yourself,Respect Yourself|<----
//----->|Be Proud Of Yourself,You're Doing Your best|<-----
#include<bits/stdc++.h>
using namespace std;
#define uniq(x) x.erase(unique(x.begin(),x.end()), x.end()) //Unique value find from vector
#define upper(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr //Upper value search;
#define lower(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr //Lower value search;
#define max3(a,b,c) max(max(a,b),c)//maximum value find three value;
#define min3(a,b,c) min(min(a,b),c)//minimum value find three value;
#define rep(i, n) for(int i = 0; i < n; ++i)
#define REP(i, n) for(int i = 1; i <= n; ++i)
#define rep1(i,start,n) for(int i=start;i<n;++i)
#define PI acos(-1.0)//PI Calculation
#define LL long long
#define AND(a,b) ((a) & (b))
#define OR(a,b) ((a)|(b))
#define XOR(a,b) ((a) ^ (b))
#define MP make_pair
#define sqr(x) ((x)*(x))
#define sqrt(x) sqrt(1.0*(x))
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define MX 1000005
#define MOD 1000000007
template<typename T> T POW(T b,T p) //Pow calculation
{
T r=1;
while(p)
{
if(p&1)r=(r*b);
b=(b*b);
p>>=1;
}
return r;
}
template<typename T> T BigMod(T b,T p,T m) //BigMod Calculation
{
T r=1;
while(p)
{
if(p&1)r=(r*b)%m;
b=(b*b)%m;
p>>=1;
}
return r;
}
//||--------------------------->||Main_Code_Start_From_Here||<---------------------------------||
bool prime[1000001];
void sieve(int l,int r)
{
int temp=0;
memset(prime,true,sizeof(prime));
for(int i=2; i<=sqrt(r); i++)
{
if((l%i) == 0)
temp =l;
else
temp = i*((l/i)+1);
for(int j=max(2*i, temp); j<=r; j+=i)
{
prime[j-l]=false;
}
}
}
int main()
{
int l,r;
while(cin>>l>>r)
{
sieve(l,r);
vector<int>v;
//if(l==1) l=2;
for(int i=max(l,2); i<=r; i++)
{
if(prime[i-l])
//cout << i << "\n";
v.push_back(i);
}
int cnt=0;
for(int i=1; i<v.size(); i++)
{
if((abs(v[i]-v[i-1]))==2) cnt++;
}
cout<<cnt<<endl;
}
return 0;
}
Ly8tLS0tLT58dHJ5PTA7IHdoaWxlKCFzdWNjZXNzKSB0cnkrKzt8PC0tLS0tLQovLy0tLS0tPnxCZWxpZWYgWW91cnNlbGYsUmVzcGVjdCBZb3Vyc2VsZnw8LS0tLQovLy0tLS0tPnxCZSBQcm91ZCBPZiBZb3Vyc2VsZixZb3UncmUgRG9pbmcgWW91ciBiZXN0fDwtLS0tLQojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIHVuaXEoeCkgIHguZXJhc2UodW5pcXVlKHguYmVnaW4oKSx4LmVuZCgpKSwgeC5lbmQoKSkgLy9VbmlxdWUgdmFsdWUgZmluZCBmcm9tIHZlY3RvcgojZGVmaW5lIHVwcGVyKGFycixuLGZpeGVkKSB1cHBlcl9ib3VuZChhcnIsYXJyK24sZml4ZWQpLWFyciAgLy9VcHBlciB2YWx1ZSBzZWFyY2g7CiNkZWZpbmUgbG93ZXIoYXJyLG4sZml4ZWQpIHVwcGVyX2JvdW5kKGFycixhcnIrbixmaXhlZCktYXJyICAvL0xvd2VyIHZhbHVlIHNlYXJjaDsKI2RlZmluZSBtYXgzKGEsYixjKSBtYXgobWF4KGEsYiksYykvL21heGltdW0gdmFsdWUgZmluZCB0aHJlZSB2YWx1ZTsKI2RlZmluZSBtaW4zKGEsYixjKSBtaW4obWluKGEsYiksYykvL21pbmltdW0gdmFsdWUgZmluZCB0aHJlZSB2YWx1ZTsKI2RlZmluZSByZXAoaSwgbikgZm9yKGludCBpID0gMDsgaSA8IG47ICsraSkKI2RlZmluZSBSRVAoaSwgbikgZm9yKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiNkZWZpbmUgcmVwMShpLHN0YXJ0LG4pIGZvcihpbnQgaT1zdGFydDtpPG47KytpKQojZGVmaW5lIFBJIGFjb3MoLTEuMCkvL1BJIENhbGN1bGF0aW9uCiNkZWZpbmUgTEwgbG9uZyBsb25nCiNkZWZpbmUgQU5EKGEsYikgKChhKSAmIChiKSkKI2RlZmluZSBPUihhLGIpICgoYSl8KGIpKQojZGVmaW5lIFhPUihhLGIpICgoYSkgXiAoYikpCiNkZWZpbmUgTVAgbWFrZV9wYWlyCiNkZWZpbmUgc3FyKHgpICgoeCkqKHgpKQojZGVmaW5lIHNxcnQoeCkgc3FydCgxLjAqKHgpKQojZGVmaW5lIElORl9NQVggMjE0NzQ4MzY0NwojZGVmaW5lIElORl9NSU4gLTIxNDc0ODM2NDcKI2RlZmluZSBNWCAxMDAwMDA1CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBQT1coVCBiLFQgcCkgICAgICAgICAgLy9Qb3cgY2FsY3VsYXRpb24KewogICAgVCByPTE7CiAgICB3aGlsZShwKQogICAgewogICAgICAgIGlmKHAmMSlyPShyKmIpOwogICAgICAgIGI9KGIqYik7CiAgICAgICAgcD4+PTE7CiAgICB9CiAgICByZXR1cm4gcjsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBCaWdNb2QoVCBiLFQgcCxUIG0pIC8vQmlnTW9kIENhbGN1bGF0aW9uCnsKICAgIFQgcj0xOwogICAgd2hpbGUocCkKICAgIHsKICAgICAgICBpZihwJjEpcj0ocipiKSVtOwogICAgICAgIGI9KGIqYiklbTsKICAgICAgICBwPj49MTsKICAgIH0KICAgIHJldHVybiByOwp9CgovL3x8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPnx8TWFpbl9Db2RlX1N0YXJ0X0Zyb21fSGVyZXx8PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXx8CmJvb2wgcHJpbWVbMTAwMDAwMV07Cgp2b2lkIHNpZXZlKGludCBsLGludCByKQp7CiAgICBpbnQgdGVtcD0wOwogICAgbWVtc2V0KHByaW1lLHRydWUsc2l6ZW9mKHByaW1lKSk7CiAgICBmb3IoaW50IGk9MjsgaTw9c3FydChyKTsgaSsrKQogICAgewogICAgICAgIGlmKChsJWkpID09IDApCiAgICAgICAgICAgIHRlbXAgPWw7CiAgICAgICAgZWxzZQogICAgICAgICAgICB0ZW1wID0gaSooKGwvaSkrMSk7CgogICAgICAgIGZvcihpbnQgaj1tYXgoMippLCB0ZW1wKTsgajw9cjsgais9aSkKICAgICAgICB7CiAgICAgICAgICAgIHByaW1lW2otbF09ZmFsc2U7CgogICAgICAgIH0KCiAgICB9Cn0KCmludCBtYWluKCkKewogICAgaW50IGwscjsKICAgIHdoaWxlKGNpbj4+bD4+cikKICAgIHsKICAgICAgICBzaWV2ZShsLHIpOwogICAgICAgIHZlY3RvcjxpbnQ+djsKICAgICAgICAvL2lmKGw9PTEpIGw9MjsKICAgICAgICBmb3IoaW50IGk9bWF4KGwsMik7IGk8PXI7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKHByaW1lW2ktbF0pCiAgICAgICAgICAgICAgICAvL2NvdXQgPDwgaSA8PCAiXG4iOwogICAgICAgICAgICAgICAgdi5wdXNoX2JhY2soaSk7CiAgICAgICAgfQogICAgICAgIGludCBjbnQ9MDsKICAgICAgICBmb3IoaW50IGk9MTsgaTx2LnNpemUoKTsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoKGFicyh2W2ldLXZbaS0xXSkpPT0yKSBjbnQrKzsKICAgICAgICB9CiAgICAgICAgY291dDw8Y250PDxlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0=