static void Main(string[] args) { List<int> starting = new List<int>(); int maxCount = 60 - 1; for (int i = 1; i < 1000000; i++) { int next = i.Digits().Select(fact).Sum(); int count = 1; HashSet<int> repeats = new HashSet<int>(); while (next != i) { next = next.Digits().Select(fact).Sum(); if (repeats.Contains(next)) { break; } repeats.Add(next); count++; } if(count >= maxCount) { starting.Add(i); maxCount = count; } } Console.WriteLine(starting.ToStringPretty() + "\n" + maxCount + "\n" + starting.Count); Console.ReadKey(); }
static void Main(string[] args) { int maxcount = 0; var c = new List<int>(); for (int i = 1; i < 100; i++) { Console.WriteLine(i); var chain = AmicableChain(i); if (chain.Count > maxcount) { maxcount = chain.Count; c = chain; } } Console.WriteLine(c.ToStringPretty()); Console.ReadKey(); }