#include <iostream>
using namespace std;
int main()
{
const int N = 28124;
bool bAbundant[N];
bAbundant[1] = false;
for ( int nNum = 2; nNum < N; ++nNum )
{
int nSum = 1;
int nDivisor = 2;
for ( ; nDivisor * nDivisor < nNum; ++nDivisor )
{
if ( nNum % nDivisor == 0 )
{
nSum += nDivisor;
nSum += nNum / nDivisor;
}
}
if ( nDivisor * nDivisor == nNum )
{
nSum += nDivisor;
}
bAbundant[nNum] = (nSum > nNum);
}
int nSum = 0;
for ( int nNum = 1; nNum < N; ++nNum )
{
int nLess = 1;
int nGreater = nNum - 1;
while ( nLess <= nGreater )
{
if ( bAbundant[nLess] && bAbundant[nGreater] )
{
break;
}
++nLess;
--nGreater;
}
if ( nLess > nGreater )
{
nSum += nNum;
}
}
cout << nSum << endl;
return 0;
}
http://projecteuler.net/problem=23 [Answer:4179871]
最新推荐文章于 2023-11-15 12:12:51 发布