int main () { std::cout << " -----------\n" << "Project Euler Problem #037 Solution\n" << " -----------\n\n"; short TruncPrimes = 0; int i = 13, TruncSum = 0; while(TruncPrimes < 11) { // Check if the number is prime, and then if it's a truncatable prime. if(is_prime(i) && is_trunc_prime(i)) { TruncPrimes++; TruncSum += i; std::cout << "Truncatable prime #" << TruncPrimes << " = " << i << "\n"; } // Even numbers, 2+ digit numbers ending in 5, 1, and 9 are not prime. // Thus, only test numbers that end in 3 or 7. switch(i % 10) { case 3: i += 4; break; default: i += 6; break; } // std::cout << i << " "; } std::cout << "Sum of the truncatable primes: " << TruncSum << "\n"; return 0; }
int main() { std::vector<int64_t> trunc_primes; // Generate a list of primes and check if each prime is truncatable euler::PrimeSieve sieve(kLimit); std::vector<int64_t> primes = sieve.getPrimes(); for (int i = 5; trunc_primes.size() != 11 && i < primes.size(); i++) if (is_trunc_prime(primes[i], sieve)) trunc_primes.push_back(primes[i]); int64_t solution = std::accumulate(trunc_primes.begin(), trunc_primes.end(), 0); std::cout << solution << std::endl; }