using System; using System.Collections.Generic; using System.Linq; namespace RosettaCode.AmicablePairs { internal static class Program { private const int Limit = 20000; private static void Main() { foreach (var pair in GetPairs(Limit)) { Console.WriteLine("{0} {1}", pair.Item1, pair.Item2); } } private static IEnumerable> GetPairs(int max) { List divsums = Enumerable.Range(0, max + 1).Select(i => ProperDivisors(i).Sum()).ToList(); for(int i=1; i(i, sum); } } } private static IEnumerable ProperDivisors(int number) { return Enumerable.Range(1, number / 2) .Where(divisor => number % divisor == 0); } } }