埃氏筛求助
  • 板块P1835 素数密度
  • 楼主dtrthg
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/7/16 23:40
  • 上次更新2023/10/27 19:57:23
查看原帖
埃氏筛求助
379113
dtrthg楼主2022/7/16 23:40

qwq

#include <iostream>
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
#define ll long long
#define mod 1000000007
const ll Maxn=1e6+10;
bool pr[Maxn],a[Maxn];
ll ss[Maxn];
ll cnt=0;
void prime(ll n)
{
	for(ll i=2;i*i<=n;i++)
	{
		if(!pr[i])
		{
			ss[++cnt]=i;
			for(ll j=i*i;j<=n;j+=i)
			{
				pr[j]=1;
			}
		}
	}
	
}
void prime2(ll le,ll ri)
{
	for(ll i=1;i<=cnt;i++)
	{
		ll be;
		if(ss[i]-le%ss[i]!=ss[i]) be=le+ss[i]-le%ss[i];
		else be=le;
//		cout<<be<<' '<<ss[i]<<endl;//
		if(be==ss[i]) be+=ss[i];
		for(ll j=be;j<=ri;j+=ss[i])
		{
			a[j-le]=1;
		}
	}
}
int main()
{
	ll L,R;cin>>L>>R;
	//³õʼ»¯+in
	prime(50000);
	prime2(L,R);
	//É¸ËØÊý
	ll ans=0;
	a[1]=1;
	for(ll i=L;i<=R;i++)
	{
		if(!a[i-L]) ans++;
	}
	//ͳ¼ÆÇø¼äËØÊý¸öÊý 
	cout<<ans<<endl;
	//out 
	return 0;
}
/*
in1:
2 11
out1:
5
*/

2022/7/16 23:40
加载中...