public List <PairOfSquares> FindSquaresWhereDifferenceIs(int n) { var pairsOfSquares = new List <PairOfSquares> { }; var factors = factorization.GetFactors(n); var factorsThatAreValidForDifferenceBetweenSquares = factors.Where(f => f.LargerFactor % 2 == f.SmallerFactor % 2); return(factorsThatAreValidForDifferenceBetweenSquares.Select(f => this.GetPairOfSquaresWithCriteria(f.LargerFactor, f.SmallerFactor)).ToList()); }
public void TestGetFactors(int n) { var factorization = new Factorization(); var factors = factorization.GetFactors(n).OrderBy(n => n.SmallerFactor).ToArray(); var expectedFactors = expectedFactorPairs[n].OrderBy(n => n.SmallerFactor).ToArray(); Assert.AreEqual(expectedFactors.Length, factors.Length); for (int i = 0; i < factors.Length; i++) { Assert.AreEqual(expectedFactors[i].SmallerFactor, factors[i].SmallerFactor); Assert.AreEqual(expectedFactors[i].LargerFactor, factors[i].LargerFactor); } }