TLE了一个点!用线性筛都能TLE!?
查看原帖
TLE了一个点!用线性筛都能TLE!?
593753
LukeSu楼主2022/5/3 22:19
#include<bits/stdc++.h>
using namespace std;

int prime[123451611], cnt;
bitset<123451611> st, f;

void Euler(int u){   //线性筛建素数表
	for(int i = 2; i <= u; i++){
		if(!st[i]){
			prime[cnt++] = i;
			f[i] = true;
		}
			for(int j = 0; prime[j] <= u / i; j++){
				st[prime[j] * i] = true;
				if(i % prime[j] == 0) break;
			}
	}
}

int main(){
	cin.tie(0)->sync_with_stdio(false);
	int L, maxsize = 0;
	cin >> L;
	Euler(L);
	int i, res = 0;
	for(i = 2;;i++){
		if(f[i] == true){
			maxsize += i;
			if(maxsize > L){
				break;
			}
			cout << i << endl;
			++res;
		}
	}
	cout << res;
	
	return 0;
}
2022/5/3 22:19
加载中...