WA 求条
查看原帖
WA 求条
906057
ELECTRODE_kaf楼主2024/11/12 17:31
#include<bits/stdc++.h>
using namespace std;

#define maxn 1000010
typedef long long ll;

ll pri[10000];
bool a[maxn];

ll es(ll n,ll pri[]){
	for(ll i=2;i*i<=n;i++){
		if(a[i]==0){
			for(ll j=i<<1;j<=n;j+=i) a[j]=1;
		}
	}
	
	ll cnt=0;
	
	for(ll i=2;i<=n;i++){
		if(!a[i]) pri[cnt++]=i;
	}
	
	return cnt;
}

int main (){
	ll cnt=es(5000,pri);
	ll l,r;
	scanf("%lld %lld",&l,&r);
	memset(a,0,sizeof(a));
	
	for(ll i=0;i<cnt;i++){
		for(ll j=max(2ll,(l-1ll)/pri[i]+1ll)*pri[i];j<=r;j+=pri[i]) {
			a[j-l]=1;
		}
	}
	
	ll ans=0;
	
	for(ll i=l;i<=r;i++){
		if(a[i-l]==0) ans++;
	}
	
	if(l>1) printf("%lld",ans);
	else cout<<ans-1;
	
	return 0;
}
2024/11/12 17:31
加载中...