用了long long, 数组也没开大, 还是RE了
查看原帖
用了long long, 数组也没开大, 还是RE了
22240
卢浙浩楼主2021/5/9 18:18

全部RE,但本地是可以的

#include<stdio.h>
#define MAX 1000002
char notPrime[MAX],a[MAX];
int prime[MAX/6],n;
int main(){
	int ans=0;
	long long l,r,i,j;
	for(i=2;i<MAX;i++){
		if(!notPrime[i])
			prime[n++]=i;
		for(j=0;j<n&&i*prime[j]<MAX;j++)
			notPrime[i*prime[j]]=1;
	}
    
	scanf("%lld%lld",&l,&r);
	for(i=0;i<n;i++){
		j=l/prime[i]*prime[i]-l;
		if(l/prime[i]<2)j=2*prime[i]-l;
		for(;j<=r-l;j+=prime[i])a[j]=1;
	}
	for(i=0;i<=r-l;i++)if(!a[i])ans++;
	printf("%d\n",ans);
	return 0;
}
2021/5/9 18:18
加载中...