Pagini recente » Istoria paginii runda/ce_concurs/clasament | Istoria paginii runda/barbari | Cod sursa (job #1060959) | Cod sursa (job #2591565) | Cod sursa (job #235990)
Cod sursa(job #235990)
#include <cstdio>
#include <bitset>
#include <cmath>
using namespace std;
#define MAX_D 50005
#define MAX_Nr 6005
#define MAX_N 100000003
long long A, B;
long long V[MAX_Nr];
int Nrd;
bitset <MAX_N> viz;
bitset <MAX_D >> 1> pr;
void desc(long long B)
{
long sq = sqrt(B);
V[++Nrd] = 4;
for(long i = 3; i <= sq; i += 2)
{
if(pr[i >> 1] == 1) continue;
V[++Nrd] = (long long) i*i;
for(long j = (i >> 1) + i; j <= sq; j += i)
pr[j] = 1;
}
}
void ciur()
{
for(int i = 1; i <= Nrd; ++i)
{
long long k = A;
long r = A % V[i];
if(r)
k += (V[i] - r);
for(long long j = k; j <= B; j += V[i])
viz[j - A] = 1;
}
long Rez = 0;
for(int i = 0; i <= B-A; ++i)
if(viz[i] == 0)
++Rez;
printf("%ld\n",Rez);
}
int main()
{
freopen("nasa.in","rt",stdin);
freopen("nasa.out","wt",stdout);
scanf("%lld %lld",&A, &B);
desc(B);
ciur();
}