社区讨论

全WA求助!!!

P3383【模板】线性筛素数参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m6tcd1jn
此快照首次捕获于
2025/02/06 20:56
去年
此快照最后确认于
2025/11/04 09:52
4 个月前
查看原帖
my code:
CPP
#include <bits/stdc++.h>
using namespace std;

std::vector<int> eulerSieve(int n) {
	std::vector<bool> isPrime(n + 1, true); // 标记是否为素数
	std::vector<int> primes; // 存储素数
	isPrime[0] = isPrime[1] = false; // 0和1不是素数

	for (int i = 2; i <= n; ++i) {
		if (isPrime[i]) {
			primes.push_back(i); // i是素数,加入列表
		}
		// 筛选掉所有i的倍数
		for (int j = 0; j < primes.size() && i * primes[j] <= n; ++j) {
			isPrime[i * primes[j]] = false; // 标记为非素数
			if (i % primes[j] == 0) {
				break; // 如果i已经是primes[j]的倍数,停止筛选
			}
		}
	}
	return primes;
}

int main() {
	std::ios::sync_with_stdio(0);
	int n;
	int q;
	cin >> n;
	cin >> q;
	vector<int>b;
	vector<int>a = eulerSieve(n);
	for (int i = 1; i <= q; i++) {
		int x;
		cin >> x;
		b.push_back(a[i - 1]);
	}
	for (int i = 0; i < q; i++) {
		cout << b[i] << endl;
	}
	return 0;
}
样例过了,为什么内部不行?

回复

0 条回复,欢迎继续交流。

正在加载回复...