Beispiel #1
0
 public void VerifiesDistinctPrimeFactorsAgainstNaiveFactorizer()
 {
     var sieveFactorizer = new SieveOfEratosthenesFactorizer(3481);
     var trialDivisionFactorizer = new TrialDivisionFactorizer(3481);
     for (int n = 0; n <= 3481; ++n)
     {
         CollectionAssert.AreEquivalent(
             NaivePrimeDeciderProviderFactorizer.GetDistinctPrimeFactors(n).ToArray(),
             sieveFactorizer.GetDistinctPrimeFactors(n).ToArray());
         CollectionAssert.AreEquivalent(
             NaivePrimeDeciderProviderFactorizer.GetDistinctPrimeFactors(n).ToArray(),
             trialDivisionFactorizer.GetDistinctPrimeFactors(n).ToArray());
     }
 }
Beispiel #2
0
        public void VerifiesDistinctPrimeFactorsAgainstKnownOutput()
        {
            var sieveFactorizer = new SieveOfEratosthenesFactorizer(1000);
            var trialDivisionFactorizer = new TrialDivisionFactorizer(1000);

            foreach (var numberPrimeFactorsPair in numberPrimeFactorsPairs)
            {
                int number = numberPrimeFactorsPair.Item1;
                int[] distinctPrimeFactors = numberPrimeFactorsPair.Item2.Distinct().ToArray();

                CollectionAssert.AreEquivalent(distinctPrimeFactors, sieveFactorizer.GetDistinctPrimeFactors(number).ToArray());
                CollectionAssert.AreEquivalent(distinctPrimeFactors, trialDivisionFactorizer.GetDistinctPrimeFactors(number).ToArray());
                CollectionAssert.AreEquivalent(distinctPrimeFactors, NaivePrimeDeciderProviderFactorizer.GetDistinctPrimeFactors(number).ToArray());
            }
        }
Beispiel #3
0
        private void TrialDivisionFactorizer(int limit, int passes, int start, int end)
        {
            var factorizer = new TrialDivisionFactorizer(limit);

            for (int p = 0; p < passes; ++p)
            {
                for (int n = start; n <= end; ++n)
                {
                    factorizer.GetPrimeFactors(n).ToArray();
                }
            }
        }