public static async Task <(ulong md, List <ulong> divs)> MostDivisibleNumber() { const ulong batchSize = 100000; var maximum = 4 * batchSize; var tasks = new List <Task <ulong> >(); for (var i = 1ul; i *batchSize <= maximum; i++) { tasks.Add(MostDivisibleNumber((i - 1) * batchSize, i * batchSize)); } var results = await Task.WhenAll(tasks); var mostDivisible = ComparisonHelper <ulong> .Max(results); return(mostDivisible, GetListOfDivisors(mostDivisible)); }