public BigInteger Solve(BigInteger?input = null) { BigInteger result = 0; bool[] primesUnderLimit = PrimeHelper.FindPrimesUnderLimit(10001); for (int i = 2; i < 10000; i++) { if (primesUnderLimit[i]) { continue; } BigInteger sumOfDivisors = DivisorsHelper.SumOfDivisors(i, primesUnderLimit) - i; if (sumOfDivisors < 10000 && sumOfDivisors != i && DivisorsHelper.SumOfDivisors((int)sumOfDivisors, primesUnderLimit) - sumOfDivisors == i) { result += i; } } return(result); }