public BigInteger Solve(BigInteger?input = null) { int numberOfDivisors = 0; int i = 2, triangleNumber = 1; while (numberOfDivisors < 500) { numberOfDivisors = 0; triangleNumber += i; int testNumber = triangleNumber; Dictionary <int, int> divisors = DivisorsHelper.CalculatePrimeDivisors(testNumber, PrimeHelper.FindPrimesUnderLimit(200000000)); numberOfDivisors = divisors.Values.ElementAt(0) + 1; for (int l = 1; l < divisors.Count; l++) { numberOfDivisors *= divisors.Values.ElementAt(l) + 1; } i++; } return(triangleNumber); }