这个是大数(1e9)的小区间(1e6)的素数个数
埃氏n ln n大约2e7  预测400ms
线性打表2~根号n
for i:素数表
    for j:l~r中i最小的倍数~n
        st[j]=true
for 找出素数
代码:
#include <bits/stdc++.h>
using namespace std;

const int N=1e5,M=1e6+7;

int prime[N+5],cnt;
bool st[N+5];
int l,r,ans;
bool isprime[M+5];

void mTable(){
	for(int i=2;i<=N;i++){
		if(!st[i]) prime[cnt++]=i;
		for(int j=0;prime[j]<=N/i;j++){
			st[i*prime[j]]=true;
			if(i%prime[j]==0) break;
		}
	}
}

int main(int argc, char** argv) {
	cin>>l>>r;
	mTable();
	for(int i=0;i<cnt;i++){
		int p=prime[i];
		for(long long j=max((long long)p<<1,1LL*(long long)ceil(1.0*l/p)*p);j<=r;j+=p){
			isprime[j-l]=true;
		}
	}
	for(int i=0;i<=r-l;i++)
		if(!isprime[i]&&i+l>1) ans++;//注意以上埃氏不能筛1
	cout<<ans<<endl;
	return 0;
}