54pts求助,有注释
  • 板块P1835 素数密度
  • 楼主Drind
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/1 11:24
  • 上次更新2023/11/3 11:59:55
查看原帖
54pts求助,有注释
305854
Drind楼主2023/7/1 11:24

其中#1-#5,#8AC,#6#7#9#10RE,#11WA

#include<bits/stdc++.h>
using namespace std;

int prim[100001];//线性筛数组
int vis[100001];//线性筛数组
int cnt;
int v[10000001];//[l,r]中间标记

void xxs(int n){
	for(int i=2;i<=n;i++){
		if(!vis[i]){
			prim[++cnt]=i;
		}
		for(int j=1;1ll*i*prim[j]<=n;j++){
			vis[i*prim[j]]=1;
			if(i%prim[j]==0)
				break;
		}
	}
}

int main(){
	int l,r,ans=0;
	cin>>l>>r;
	xxs(50000);//筛到根号n
	for(int i=1;i<=cnt;i++){
		int tmp=((l-1)/prim[i]+1);//搜索开头
		for(int j=max(tmp,2);j*prim[i]<=r;j++){
			v[j*prim[i]-l+1]=1;
		}//标记
	}
	for(int i=1;i<=r-l+1;i++)
		ans+=!v[i];//求答案
	cout<<ans;
}
 
2023/7/1 11:24
加载中...