project-euler

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

Euler_21.cpp (418B)


      1 #include "Euler.h"
      2 
      3 int Euler::AmicableNumbers()
      4 {
      5     std::vector<unsigned> sumDivisors(10001, 0);
      6 
      7     for(int i = 2; i < 10000; ++i)
      8         sumDivisors[i] = EulerUtility::sumOfDivisors(i) - i;
      9 
     10     int sum = 0;
     11 
     12     for (unsigned i = 0; i < sumDivisors.size(); ++i)
     13         if (sumDivisors[i] < sumDivisors.size() && sumDivisors[sumDivisors[i]] == i && sumDivisors[i] != i)
     14             sum += i;
     15 
     16     return sum;
     17 }