Example #1
0
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;
 }
Example #2
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;
	
}