#include #include #include int scanInput(){ int a = 0; scanf("%d", &a); return a; } int isPrime(int i){ int max = (int)(sqrt(i) + 1); for (int j = 2; j < max; j++) { if (i % j == 0) return 0; } return 1; } int * generatePrimes(int distance){ int * arr = (int *)calloc(distance, sizeof (int)); int length = 0; for (int i = 2; i < distance; i++){ if (isPrime(i)) arr[length++] = i; } return arr; } int numberOfWaysFromPoint(int * primes, int distance, int point){ int sum = 0; if (distance - primes[point] <= 14) sum = 1; for (int i = point + 1; i < distance; i++){ if (primes[i] == 0) break; else if ((primes[i] - primes[point]) <= 14){ sum += numberOfWaysFromPoint(primes, distance, i); } } return sum; } int calculateNumberOfWays(int * primes, int distance){ int sum = numberOfWaysFromPoint(primes, distance, 0); /*for (int i = 0; i < distance; i++) { if (primes[i] == 0) break; if (primes[i] < 14){ sum += numberOfWaysFromPoint(primes, distance, i); } }*/ return sum; } int main() { int distance = scanInput(); int * primes = generatePrimes(distance); int sum = calculateNumberOfWays(primes, distance); printf("%d\n", sum); return 0; }