public void Solve() { int i = 4; List<Amicable> sums = new List<Amicable>(); while (i < 10000) { var result = new Amicable(); result.number = i; for (int y = 1; y <= Math.Sqrt(i); y++) { if ((i % y) == 0) { result.product.Add(y); if (y != 1) result.product.Add(i / y); } } sums.Add(result); i++; } foreach (var item in sums) { if (item.sum < 10000) { checkIfAmicable(sums, item); } } List<Amicable> myResults = sums.Where(x => x.isAmicable).ToList(); Console.WriteLine("Solution for problem 21: {0}", myResults.Sum(x => x.number)); }
private void checkIfAmicable(List<Amicable> myList, Amicable value) { var y = myList.SingleOrDefault(x => (x.number == value.sum && x.number != x.sum)); if (y != null) value.isAmicable = (y.number == value.sum && value.number == y.sum); }