Ejemplo n.º 1
0
        public static int SpiralPrimes()
        {
            float rate         = 100;
            int   spiralLength = 1;
            int   primeCount   = 0;
            int   lastCorner   = 1;
            int   loopCount    = 0;

            while (rate > 0.1)
            {
                loopCount++;
                spiralLength += 2;

                for (var i = 0; i < 4; i++)
                {
                    lastCorner += (spiralLength - 1);
                    if (PrimeHelpers.IsPrimeNumber(lastCorner))
                    {
                        primeCount++;
                    }
                }

                rate = (float)primeCount / (float)((loopCount * 4) + 1);
            }

            return(spiralLength);
        }
Ejemplo n.º 2
0
        public static decimal PrimePermutations()
        {
            decimal result = 0;

            int number           = 1489;
            int increasingNumber = 3330;

            while (number <= 9999)
            {
                int n1 = number;
                int n2 = n1 + increasingNumber;
                int n3 = n2 + increasingNumber;

                if (PrimeHelpers.IsPrimeNumber(n1) && PrimeHelpers.IsPrimeNumber(n2) && PrimeHelpers.IsPrimeNumber(n3))
                {
                    if (MathHelpers.IsPermutation(n1, n2) && MathHelpers.IsPermutation(n1, n3))
                    {
                        result = MathHelpers.ConcatenateNumbers(new List <decimal> {
                            n1, n2, n3
                        });
                        break;
                    }
                }

                number++;
            }

            return(result);
        }
Ejemplo n.º 3
0
        public static long ConsecutivePrimeSum()
        {
            long consecutivePrime = 0;

            List <long> primesList = PrimeHelpers.ExecuteSieveofEratosthenes(1000000);

            long currentPrime = primesList[primesList.Count - 1];
            long maxVal       = 0;

            for (var j = (primesList.Count - 1) - 1; j >= 0; j--)
            {
                long currentSum = 0;

                for (var k = j; k >= 0 && currentSum <= currentPrime; k--)
                {
                    currentSum += primesList[k];
                    if (j - k > maxVal)
                    {
                        maxVal = j - k;
                        if (primesList.Contains(currentSum))
                        {
                            consecutivePrime = currentSum;
                        }
                    }
                }
            }

            return(consecutivePrime);
        }
Ejemplo n.º 4
0
        public static long NextPrime(long number)
        {
            while (true)
            {
                if (PrimeHelpers.IsPrimeNumber(number))
                {
                    return(number);
                }

                number++;
            }
        }
Ejemplo n.º 5
0
        public static int DistinctPrimesFactors()
        {
            int number     = 2 * 3 * 5 * 7;
            int foundCount = 0;

            List <long> primeList = PrimeHelpers.ExecuteSieveofEratosthenes(1000000);

            while (foundCount < 4)
            {
                long tempNumber       = number;
                long prime            = primeList[0];
                int  primeCount       = 0;
                bool isDifferentPrime = false;
                int  primeIndex       = 0;

                primeCount = tempNumber % prime == 0 ? 1 : 0;

                while (tempNumber > 1)
                {
                    if (tempNumber % prime == 0)
                    {
                        tempNumber /= prime;
                        if (isDifferentPrime)
                        {
                            primeCount++;
                            isDifferentPrime = false;
                        }
                    }
                    else
                    {
                        primeIndex++;
                        prime            = primeList[primeIndex];
                        isDifferentPrime = true;
                    }
                }

                number++;
                if (tempNumber == 1 && primeCount == 4)
                {
                    foundCount++;
                }
                else
                {
                    foundCount = 0;
                }
            }

            return(number - 4);
        }
Ejemplo n.º 6
0
        public static long SummationOfPrimes()
        {
            int  number           = 2000000;
            long summartionPrimes = 0;

            for (int i = 2; i < number; i++)
            {
                if (PrimeHelpers.IsPrimeNumber(i))
                {
                    summartionPrimes += i;
                }
            }

            return(summartionPrimes);
        }
Ejemplo n.º 7
0
        public static long PandigitalPrime()
        {
            long result    = 0;
            var  primeList = PrimeHelpers.ExecuteSieveofEratosthenes(987654321);

            for (var i = primeList.Count - 1; i >= 0; i--)
            {
                if (MathHelpers.IsPandigital(primeList[i]))
                {
                    result = primeList[i];
                    break;
                }
            }

            return(result);
        }
Ejemplo n.º 8
0
        static bool IsCricularPrimes(int primeNumber)
        {
            int circularNumber = MathHelpers.GetNextCircularNumber(primeNumber);

            while (circularNumber != primeNumber)
            {
                if (!PrimeHelpers.IsPrimeNumber(circularNumber))
                {
                    return(false);
                }

                circularNumber = MathHelpers.GetNextCircularNumber(circularNumber);
            }

            return(true);
        }
Ejemplo n.º 9
0
        public static int Prime10001st()
        {
            int maxNumber     = 10001;
            int numberOfPrime = 1;
            int prime         = 1;

            while (numberOfPrime <= maxNumber)
            {
                prime += 1;
                if (PrimeHelpers.IsPrimeNumber(prime))
                {
                    numberOfPrime += 1;
                }
            }

            return(prime);
        }
Ejemplo n.º 10
0
        public static long CircularPrimes()
        {
            int circularPrimesCount = 0;

            for (var i = 0; i < 1000000; i++)
            {
                if (PrimeHelpers.IsPrimeNumber(i))
                {
                    if (IsCricularPrimes(i))
                    {
                        circularPrimesCount++;
                    }
                }
            }

            return(circularPrimesCount);
        }
Ejemplo n.º 11
0
        public static long longLargestPrimeFactor()
        {
            long number             = 600851475143;
            long lastPrime          = 1;
            long largestPrimeNumber = 0;

            while (lastPrime <= Math.Sqrt(number))
            {
                if (number % lastPrime == 0 && lastPrime > largestPrimeNumber)
                {
                    largestPrimeNumber = lastPrime;
                }

                lastPrime = PrimeHelpers.GetNextPrime(lastPrime);
            }

            return(largestPrimeNumber);
        }
Ejemplo n.º 12
0
        public static long TruncatablePrimes()
        {
            long result      = 0;
            int  count       = 0;
            long primeNumber = 11;

            while (count < 11)
            {
                bool isFound = true;
                long left    = primeNumber;
                long right   = primeNumber;
                int  length  = MathHelpers.IntLength(left);
                while (length > 1)
                {
                    length--;
                    left /= 10;

                    long rightPow = (long)Math.Pow(10, MathHelpers.IntLength(right) - 1);
                    long digit    = right / rightPow;
                    right -= digit * rightPow;

                    if (!PrimeHelpers.IsPrimeNumber(left) || !PrimeHelpers.IsPrimeNumber(right))
                    {
                        isFound = false;
                        break;
                    }
                }

                if (isFound)
                {
                    result += primeNumber;
                    count++;
                }
                primeNumber = PrimeHelpers.GetNextPrime(primeNumber);
            }

            return(result);
        }
Ejemplo n.º 13
0
        public static long QuadraticPrimes()
        {
            long result        = 0;
            int  maxPrimeCount = 0;

            for (int a = -1000; a <= 1000; a++)
            {
                for (int b = -1000; b <= 1000; b++)
                {
                    int n = 0;
                    while (PrimeHelpers.IsPrimeNumber(Math.Abs(n * n + a * n + b)))
                    {
                        n++;
                    }
                    if (n > maxPrimeCount)
                    {
                        maxPrimeCount = n;
                        result        = a * b;
                    }
                }
            }

            return(result);
        }
Ejemplo n.º 14
0
 public void getPrimesTheory(int n, int[] expected)
 {
     Assert.Equal(expected, PrimeHelpers.getPrimes(n));
 }
Ejemplo n.º 15
0
 public void isPrimeTheory(int n, bool expected)
 {
     Assert.Equal(expected, PrimeHelpers.isPrime(n));
 }