Exemple #1
0
        public static long[] GetPrimeFactors(this long value, IPrimeProvider provider, bool makeDistinct = false)
        {
            var factors = new List <long>(4);

            foreach (var prime in provider.GetPrimes())
            {
                var primeWasAdded = false;

                while (prime.Divides(value))
                {
                    if (!(primeWasAdded && makeDistinct))
                    {
                        primeWasAdded = true;
                        factors.Add(prime);
                    }

                    value /= prime;
                }

                if (value == 1)
                {
                    break;
                }
            }

            return(factors.ToArray());
        }
 public PrimalityAlgorithm(IPrimeProvider provider, long greatestChecked)
 {
     _primes          = provider.GetPrimes();
     _greatestChecked = greatestChecked;
 }
Exemple #3
0
 // ~ 3000 ms
 private long SlowSolve(IPrimeProvider provider)
 {
     return(FindTheSmallestOfFourConsecutive(10.Power(6), number => number.GetUniquePrimeFactors(provider).Length));
 }
Exemple #4
0
 public static long[] GetUniquePrimeFactors(this long value, IPrimeProvider provider) => value.GetPrimeFactors(provider, true);