#include <bits/stdc++.h>
using namespace std;
vector<int> sieveOfEratosthenes(int limit) {
vector<bool> isPrime(limit + 1, true);
vector<int> primes;
isPrime[0] = isPrime[1] = false;
for (int i = 2; i * i <= limit; ++i) {
if (isPrime[i])
for (int j = i * i; j <= limit; j += i)
isPrime[j] = false;
}
for (int i = 2; i <= limit; ++i)
if (isPrime[i]) primes.push_back(i);
return primes;
}
int goldbachPartitions(int n, const vector<int>& primes) {
int count = 0;
int limit = n / 2;
for (vector<int>::const_iterator it1 = primes.begin(); it1 != primes.end(); ++it1) {
int p1 = *it1;
if (p1 > limit) break;
for (vector<int>::const_iterator it2 = it1; it2 != primes.end(); ++it2) {
int p2 = *it2;
if (p2 > limit) break;
int p3 = n - p1 - p2;
for(vector<int>::const_iterator it3 = it2; it3 != primes.end(); ++it3) {
if (*it3 == p3) { ount++; break; }
else if (*it3 > p3) break;
}
}
}
return count;
}
int main() {
cin >> n;
const int LIMIT = 350000;
vector<int> primes = sieveOfEratosthenes(LIMIT);
int result = goldbachPartitions(n, primes);
cout <<result << endl;
return 0;
}
要求:变量名(函数名简写),那些复杂的不常用的代码改为其他常用的代码;
样例:19 输出3