10个RE,1个WA,代码如下
#include<bits/stdc++.h>
/*#include<windows.h>
#include<unistd.h>*/
using namespace std;
const int N=sqrt(INT_MAX);
typedef long long LL;
long long l,r,ans,k,p,a[5010];
bool f[100010];
bool pd(int n)
{
if(n==1)
return 0;
for(int i=2;i<=sqrt(n);i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
memset(f,true,sizeof(f));
/*freopen(".in","r",stdin);
freopen(".out","w",stdout);*/
//srand(time(NULL));
cin>>l>>r;
for(int i=1;i<=sqrt(N);i++)
if(pd(i))
a[++k]=i;
for(int i=1;i<=sqrt(r);i++)
{
p=a[i];
for(int j=max(2*p,((long long)ceil(double(l)/double(p)))*p);j<=r;j+=p)
f[j-l+1]=false;
}
for(int i=1;i<=r-l+1;i++)
if(f[i])
ans++;
cout<<ans;
return 0;
}