60分求调!
  • 板块P1835 素数密度
  • 楼主xy_mc
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/12/10 19:21
  • 上次更新2024/12/10 21:49:50
查看原帖
60分求调!
1304256
xy_mc楼主2024/12/10 19:21

#7,8,10,11 RE 样例不过还对7个点

求调

#include<bits/stdc++.h>
using namespace std;
const int M=50000;
long long l,r,p,sum,b[50005];
bool a[9999999];
void Gprime(){     
	for(int i=2;i*i<=M;i++)
		if(!a[i]) for(int j=i*i;j<=M;j+=i) a[j]=true;
	for(int i=2;i<=M;i++)
		if(!a[i]) b[++p]=i;
}
int main(){
	cin>>l>>r;
	Gprime();
	memset(a,0,sizeof(a));
	for(int i=1;i<=p;i++){
		int L;				 
		if(b[i]>=l) L=b[i]*2;        
		else L=(l/b[i]+1)*b[i];	                   
		for(int j=L;j<=r;j+=b[i]) a[j-l+1]=true;					
	}
	for(int i=1;i<=r-l+1;i++){
		if(!a[i]) sum++;
	}
	if(l==2){
		cout<<sum;
		return 0;
	} 
	cout<<sum-1;
	return 0;
}

代码写的和一坨是的,愿谅解

2024/12/10 19:21
加载中...