static void Main(string[] args) { int result; Console.WriteLine( "Solution computed in {0}", FrameworkUtilities.Measure(() => { var qualifications = new Qualification[uBound - lBound + 1]; for (int i = lBound; i <= uBound; i++) { qualifications[i - lBound] = GetQualification(i); } var abundants = qualifications.SelectWithPosition( (q, i) => new { q, Nbr = i + lBound - 1 } ).Where(a => a.q == Qualification.Abundant).Select(a => a.Nbr).ToList(); var crossSumOfAbundants = from x1 in abundants from x2 in abundants select x1 + x2; var excepts = Enumerable.Range(1, uBound).Except(crossSumOfAbundants); return(excepts.Sum()); }, out result)); Console.WriteLine(result); Console.ReadLine(); }