#include #include #include #include #include #define MAX 220 using namespace std; vector primes(MAX, true); void erat(int last) { for (int i = 2; i <= last; i++) { if (primes[i]){ for (int j = i + i; j <= last; j+=i){ primes[j] = false; } } } } int main() { ios::sync_with_stdio(0); primes[0] = 0; primes[1] = 0; int last_prime; cin >> last_prime; erat(last_prime); /* for(int i = 0; i <= last_prime; i++) { if (primes[i]) cout << i << endl; } cout << "-----\n";*/ vector dp(last_prime + 1, 0); dp[2] = 1; for (int i = 3; i <= last_prime; i++) { if (primes[i]) { unsigned long long combinations = 0; for (int j = i - 1; j >= 2; j--) { if (i - j > 14) break; if (primes[j]) { combinations += dp[j]; } } dp[i] = combinations; } } /* for (auto it : dp) { cout << it << endl; } */ cout << dp[last_prime] << endl; return 0; }