project-euler

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

Euler_77.cpp (674B)


      1 #include <algorithm>
      2 
      3 #include "Euler.h"
      4 
      5 int primeSumRecurse(int n, int max, std::vector<int> &primes)
      6 {
      7     int sum = 0;
      8 
      9     for(uint64_t i = max; i < primes.size(); i++)
     10     {
     11         if (n - primes[i] == 0)
     12             ++sum;
     13         if (n - primes[i] > 0)
     14             sum += primeSumRecurse(n - primes[i], i, primes);
     15     }
     16 
     17     return sum;     
     18 }
     19 
     20 int Euler::PrimeSummations()
     21 {
     22     int ceiling = 1000;
     23     std::vector<int> primes = EulerUtility::getPrimesUnderCeiling(ceiling);
     24     std::reverse(primes.begin(), primes.end());
     25 
     26     int n = 0;
     27     int i = -1;
     28 
     29     while (n <= 5000)
     30     {
     31         ++i;
     32         n = primeSumRecurse(i, 0, primes);
     33     }
     34 
     35     return i;
     36 }