public void GetAllFactors_TooSmallValueGiven_ThrowsExeption() { Assert.Throws <ArgumentOutOfRangeException>(() => Factors.GetAllFactors(0)); }
public void GetAllFactors_SupportedValueGiven_ReturnsArrayOfFactors(int baseNumber, int[] expectedResult) { int[] result = Factors.GetAllFactors(baseNumber); Assert.That(result, Is.EquivalentTo(expectedResult)); }
public void GetAllFactors_SupportedValueGiven_ReturnsCorrectSizeArray() { int[] result = Factors.GetAllFactors(10); Assert.That(result.Length, Is.EqualTo(4)); }
static void Main(string[] args) { /* * The sequence of triangle numbers is generated by adding the natural numbers. * So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. * * The first ten terms would be: * 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... * * Let us list the factors of the first seven triangle numbers: * * 1: 1 * 3: 1,3 * 6: 1,2,3,6 * 10: 1,2,5,10 * 15: 1,3,5,15 * 21: 1,3,7,21 * 28: 1,2,4,7,14,28 * We can see that 28 is the first triangle number to have over five divisors. * * What is the value of the first triangle number to have over five hundred divisors? * Answer: 76576500 */ Stopwatch timer = new Stopwatch(); Console.WriteLine("Find the first Triangular Number with at least the specified number of divisors."); Console.WriteLine("--------------------------------------------------------------------------------"); Console.WriteLine(); Console.Write("How many divisors do you want? "); int divisorsWanted = int.Parse(Console.ReadLine()); int triangularNumber = 3; int triangularNumberValue = 0; bool hasRequiredDivisors = false; int mostDivisors = 0; timer.Start(); while (!hasRequiredDivisors) { triangularNumber++; triangularNumberValue = TriangularNumbers.GetNthTriangular(triangularNumber); int divisors = Factors.GetAllFactors(triangularNumberValue).Length; if (divisors > mostDivisors) { mostDivisors = divisors; } if (divisors >= divisorsWanted) { hasRequiredDivisors = true; } } timer.Stop(); Console.WriteLine("The first Triangular Number with {0} divisors is ({1}) {2}", divisorsWanted, triangularNumber, triangularNumberValue); Console.WriteLine(timer.Elapsed); Console.ReadLine(); }