90分求救
查看原帖
90分求救
673789
I_AK_IOI_and_NOI楼主2022/10/21 17:54
#include<bits/stdc++.h>
using namespace std;
bool Is_prime[100001],vis[1000001];
int l,r,Prime[114514],cnt=0;
void get()
{
	for(int i=2;i<=100001;i++)
	{
		if(Is_prime[i]==0)
		{
			Prime[++cnt]=i;
			for(int j=1;i*j<=100001;j++)
			{
				Is_prime[i*j]=1;
			}
		}
	}
}
int main()
{
	get();
	cin>>l>>r;
	for(int i=1;i<=cnt;i++)
	{
		if(Prime[i]*Prime[i]>r) break;
		int ll=l%Prime[i]==0?l/Prime[i]:l/Prime[i]+1;
		int rr=(r/Prime[i]);
		for(int j=ll;j<=rr;j++)
		{
			if(j!=1) vis[j*Prime[i]-l]=1;
		}
	}
	int ans=0;
	for(int i=0;i<=r-l;i++) 
	{
		if(vis[i]==0) ans++;
	}
	cout<<ans;
}
2022/10/21 17:54
加载中...