标准答案
2024-08-23 21:08:34
发布于:广东
0阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
const int MAX_N = 10000;
vector<bool> is_prime(MAX_N + 1, true);
void sieve() {
is_prime[0] = is_prime[1] = false;
for (int i = 2; i * i <= MAX_N; ++i) {
if (is_prime[i]) {
for (int j = i * i; j <= MAX_N; j += i) {
is_prime[j] = false;
}
}
}
}
int main() {
int n;
cin >> n;
// 生成质数表
sieve();
for (int i = 4; i <= n; i += 2) {
for (int j = 2; j <= i / 2; ++j) { // 只遍历到i/2
if (is_prime[j] && is_prime[i - j]) { // 确保j和i-j都是质数
cout << i << "=" << j << "+" << i - j << endl;
break;
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个