#include #include #include /** vector m_Primes; for ( int i = 2; i < 212; i++ ) { m_Primes.emplace_back(i); } for ( auto i = 2; i <= ceil(sqrt(212)); i++ ) { for ( auto current = m_Primes.begin()+1; current != m_Primes.end(); current++ ) { if ( i != *current && *current%i == 0 ) m_Primes.erase(current); } } for (auto current = m_Primes.begin(); current != m_Primes.end(); current++) cout << *current << ", "; */ using namespace std; int result = 0; std::vector m_Primes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211 }; void recursion ( int max, int index) { if ( m_Primes[index] == max ) { result++; return; } for ( int i = index+1; m_Primes[index] + 14 >= m_Primes[i] && m_Primes[i] <= max; i++ ) { recursion(max, i); } } int main() { int max; cin >> max; recursion(max, 0 ); cout << result; return 0; }