91分求助,第十个点TLE
查看原帖
91分求助,第十个点TLE
541553
wangshi楼主2021/10/9 19:47
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring> 
using namespace std;
bool vis[1000001];
int prime[1000001],sum;
int shai();
int main()
{
	int l,r,ans=0;
	scanf("%d%d",&l,&r);
	shai();
	if(l==1)
	{
		l=2;
	}
	for(register int i=l;i<=r;i++)
	{
		int m=i;
		bool f=false;
		for(register int j=1;j<=sum;j++)
		{
			if(m%prime[j]==0&&m!=prime[j])
			{
				f=true;
				break;
			}
			if(m<prime[j])
			{
				break;
			}
		}
		if(f==0)
		{
			ans++;	
		}
	}
	printf("%d",ans);
	return 0;
}
int shai()
{
	vis[1]=1;
	for(register int i=2;i<=46341;i++)
	{
		if(vis[i]==0)
		{
			prime[++sum]=i;		
		}		
		for(register int j=1;j<=sum&&i*prime[j]<=46341;j++)
		{
			vis[i*prime[j]]=true;
			if(i%prime[j]==0)
			{
				break;
			}
		}
	}		
} 
2021/10/9 19:47
加载中...