Euler_23.cpp (597B)
1 #include <numeric> 2 #include "Euler.h" 3 4 int Euler::NonAbundantSums() 5 { 6 int ceiling = 28123; 7 std::vector<int> abundantNumbers; 8 std::vector<int> nonAbundantSums(ceiling * 2 + 1, 0); 9 10 for (int i = 1; i <= ceiling; ++i) 11 { 12 if(EulerUtility::sumOfDivisors(i) > 2 * i) 13 abundantNumbers.push_back(i); 14 15 nonAbundantSums[i - 1] = i; 16 } 17 18 for (int abnum : abundantNumbers) 19 for (int abnum2 : abundantNumbers) 20 nonAbundantSums[abnum + abnum2 - 1] = 0; 21 22 return std::accumulate(nonAbundantSums.begin(), nonAbundantSums.end(), 0); 23 }