project-euler

https://projecteuler.net/
Log | Files | Refs | README

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 }