求助时间复杂度的分析
查看原帖
求助时间复杂度的分析
800543
NirvanaCeleste楼主2024/9/25 17:25
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010000;
int n,l,tot;
int p[maxn];
bool v[maxn];
void lineprim(int maxx) { // O(n)?
	v[0] = 1,v[1] = 1;
	for(int i=2; i<=n; i++) {
		if(!v[i]) p[++tot] = i;
		for(int j=1; j<=tot && i*p[j]<=n; j++) {
			v[i*p[j]] = 1;
			if(i % p[j] == 0) break;
		}
	}
	return;
}
int main() {
	cin>>n>>l;
	lineprim(n);
	int temp = 0;
	while(l) {
		scanf("%d",&temp);
		printf("%d\n",p[temp]);
		l--;
	}
	return 0;
}
2024/9/25 17:25
加载中...