#include #include #include using namespace std; typedef long long LL; const int N = 100000; int n, freq[3 * N + 10], ma; LL ans; vector primes; bool is_prime[3 * N + 10]; void SievePrime() { fill(is_prime, is_prime + N + 1, true); is_prime[0] = is_prime[1] = false; for (int i = 2; i <= 3 * N; ++i) { if (is_prime[i]) primes.push_back(i); for (auto p : primes) { if (1LL * i * p > N) continue; is_prime[i * p] = false; if (i % p == 0) break; } } } int main() { SievePrime(); scanf("%d", &n); ans = 0LL; for (int i = 2; i < primes.size() && primes[i] <= n; ++i) { int c = primes[i]; int b = primes[i - 1]; // b更小的前面已经构造过了 for (int j = 0; j < i - 1; ++j) { int a = primes[j]; ++freq[a + b]; } for (int j = 0; j < primes.size(); ++j) { int sum = primes[j]; if (sum - c >= 0) { ans += freq[sum - c]; } } } printf("%lld\n", ans); return 0; }