public void TestCreate()
 {
     var compositeNumber = new CompositeNumber(1, 49);
     var Composites      = compositeNumber.CompositeNumbers;
     var numbers         = compositeNumber.GetNumbers(new List <uint>()
     {
         1, 2
     });
 }
Ejemplo n.º 2
0
        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;
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        //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);
        }