public void TestCreate() { var compositeNumber = new CompositeNumber(1, 49); var Composites = compositeNumber.CompositeNumbers; var numbers = compositeNumber.GetNumbers(new List <uint>() { 1, 2 }); }
static void Main(string[] args) { string userInput = null; bool userContinue = true; while (userContinue) { userInput = StandardInputMessage.RequestInput(); if (DataValidation.ValidateInput(userInput) == false) { bool retry = StandardInputMessage.RePrompt(); if (retry == false) { userContinue = false; Environment.ExitCode = 22; } } else { long userNumber = DataManipulation.ReturnValue(userInput); if (DataValidation.ValidateComposite(userNumber) == false) { bool retry = StandardInputMessage.RePrompt(); //refactor using userContinue from RePrompt() if (retry == false) { userContinue = false; Environment.ExitCode = 44; } } else { CompositeNumber userComposite = new CompositeNumber(userNumber); LinkedList <IFactor> factors = Factorize.Factor(userComposite); List <IFactor> primeNumbers = DataManipulation.ReturnPrimes(factors); //Should be list of primes List <IFactor> compositeNumbers = DataManipulation.ReturnComposites(factors); //Should be list of composites FactorizationTree factorTree = DataManipulation.ReturnPopulatedTree(factors); StandardOutputMessage.OutputFactors(compositeNumbers, userNumber); StandardOutputMessage.OutputFactors(primeNumbers, userNumber); StandardOutputMessage.OutputFactorizationTree(factorTree, userNumber); bool retry = StandardInputMessage.RePrompt(); if (retry == false) { userContinue = false; Environment.ExitCode = 100; } } } } }
public void Factorize_CompleteFactoring(long number) { // Arrange CompositeNumber compositeNumber = new CompositeNumber(number); // Act var factors = Factorize.Factor(compositeNumber); var expected = new LinkedList <IFactor>(); // Assert Assert.IsType(factors.GetType(), expected); Assert.True(factors.Count >= 2); }
public void FactorizationTree_Add_AddRoot(long root) { // Arrange CompositeNumber compositeNumber = new CompositeNumber(root); FactorizationTree testTree = new FactorizationTree(); // Act testTree.Add(compositeNumber); // Assert Assert.True(testTree.Count == 1); Assert.True(testTree.Root.value == root); }
public void FactorizationTree_Add_AddSubNodes(long root, long sub1, long sub2) { // Arrange PrimeNumber prime1 = new PrimeNumber(sub1); PrimeNumber prime2 = new PrimeNumber(sub2); CompositeNumber compositeNumber = new CompositeNumber(root); FactorizationTree testTree = new FactorizationTree(); // Act testTree.Add(compositeNumber); testTree.Add(prime1); testTree.Add(prime2); // Assert Assert.True(testTree.Count == 3); Assert.True(testTree.Root.value == root); }
//The Factoring algorithm was created by Sam007 of www.geeksforgeeks.org on the post: https://www.geeksforgeeks.org/print-all-prime-factors-of-a-given-number/ //Changes were made to incorporate adding the derived numbers to a list rather than printing them to console directly public static LinkedList <IFactor> Factor(CompositeNumber compNum) { LinkedList <IFactor> factors = new LinkedList <IFactor>(); factors.AddFirst(new CompositeNumber(compNum.Value)); while (compNum.Value % 2 == 0) { compNum.Value /= 2; factors.AddLast(new PrimeNumber(2)); if (compNum.Value % 2 == 0) { factors.AddLast(new CompositeNumber(compNum.Value)); } } for (long i = 3; i <= Math.Sqrt(compNum.Value); i += 2) { while (compNum.Value % i == 0) { if (compNum.Value != i && compNum.Value != factors.First.Value.Value) //factors.First.FirstNodeValue<IFactor>.IFactor.Value { factors.AddLast(new CompositeNumber(compNum.Value)); } compNum.Value /= i; factors.AddLast(new PrimeNumber(i)); } } if (compNum.Value > 2) { factors.AddLast(new PrimeNumber(compNum.Value)); } return(factors); }