蒟蒻萌新爆零求助
查看原帖
蒟蒻萌新爆零求助
418601
Typed_SIGTERM楼主2022/3/16 20:27

样例通过,但WA+TLE,求大佬们不鄙视

#include<cstdio>
#include<bitset>
using namespace std;
const int N=100000010;
bitset<N> not_prime;
bool is_prime(int n){
    return !not_prime[n];
}
void set_prime(int n){
	not_prime[n]=true;
}
int primes_in_range(int l,int r){
    int sum=0;
    for(int i=l;i<=r;i++){
        if(is_prime(i)){
            sum++;
        }
    }
    return sum;
}
int rebuild(int n){
	int sum=0;
	while(n!=0){
		sum+=n%10;
		n/=10;
	}
	return sum;
} 
void init(){
	set_prime(0);
	set_prime(1);
    for(int i=2;i<=N;i++){
        if(is_prime(i)){
            for(int j=i+i;j<=N;j+=i){
            	//if(j<=15)	printf("%d is not prime\n",j);
                set_prime(j);
            }
            if(!is_prime(rebuild(i))){
            	//if(i<=15)	printf("%d is not double prime\n",i);
            	set_prime(i);
			}
        }
    }
}
void test(){
	printf("prime={");
	for(int i=1;i<=14;i++){
		printf("%d,",(int)!not_prime[i]);
	}
	printf("%d}\n",(int)!not_prime[15]);
}
int main(){
    int t,l,r;
    //printf("%d",rebuild(123));
    init();
    //test();
    scanf("%d",&t);
    while(t--){
        scanf("%d%d",&l,&r);
        printf("anwser=");
        printf("%d\n",primes_in_range(l,r)); 
    }
    return 0;
}
2022/3/16 20:27
加载中...