Euler_41.cpp (625B)
1 #include <algorithm> 2 3 #include "Euler.h" 4 5 int determinePanPrime(std::string lexicon) 6 { 7 for (int i = 0; i < EulerUtility::factorial(lexicon.size()); ++i) 8 { 9 int potentialPanPrime = atoi(lexicon.c_str()); 10 int mod = potentialPanPrime % 10; 11 12 if ((mod % 2 != 0) && (mod != 5)) 13 if (EulerUtility::isPrime(potentialPanPrime, 5)) 14 return potentialPanPrime; 15 16 std::prev_permutation(lexicon.begin(), lexicon.end()); 17 } 18 19 20 return determinePanPrime(lexicon.substr(1, lexicon.size() - 1)); 21 } 22 23 int Euler::PanDigitalPrime() 24 { 25 return determinePanPrime("987654321"); 26 }