#include #include #include std::vector primeNumbers; const std::vector &generatePrime(std::vector &res, int max) { res.push_back(2); for (unsigned it = 3; it != max + 1 ; ++it) { bool isPrime = false; for (unsigned it2 = it - 1; it2 > 1; --it2) { if (it % it2 == 0) { // not prime isPrime = false; break; } else { if (it2 == 2) { isPrime = true; } continue; } } if (isPrime) { res.push_back(it); } } return res; } int total = 0; int input = 0; void generate(int i) { int j = 1; total++; bool flag = false; while ( i + j < primeNumbers.size() - 1 && primeNumbers[i + j] - primeNumbers[i] <= 14) { flag = true; generate(i+j); j++; } if (input - primeNumbers[i] > 14) { --total; } } int main() { std::cin >> input; primeNumbers = generatePrime(primeNumbers, input); /* for (auto i : primeNumbers) { std::cout << i << " " << std::flush; } */ for (int i = 1; i < primeNumbers.size() - 1 && primeNumbers[i] <= 16; ++i) { generate(i); } if (input <= 16) { ++total; } std::cout << total << std::endl; return 0; }