public static (int, int) GetCoefficientsForQuadraticExpressionWhichProducesMaximumNumberOfPrimes(int maxModulusOfCoefficients) { var longestSequenceOfPrimes = 0; var coefficientsForLongestSequence = (0, 0); foreach (int a in Enumerable.Range(-maxModulusOfCoefficients + 1, 2 * maxModulusOfCoefficients - 2)) { foreach (int b in Enumerable.Range(1, maxModulusOfCoefficients)) { var quadraticFormula = GetQuadraticFormule(a, b); var n = 0; while (PrimeHelper.IsPrime(quadraticFormula(n))) { n++; } if (n > longestSequenceOfPrimes) { longestSequenceOfPrimes = n; coefficientsForLongestSequence = (a, b); } } } return(coefficientsForLongestSequence); }
public static long GetSolutionOfProblem49() { var arithmeticSequences = PrimeHelper.ArithmeticPrimePermutationsWith4Digits(); var sequenceWeAreLookingFor = arithmeticSequences[arithmeticSequences.Keys.ToList().Where(number => number != 1487).Single()]; return(long.Parse(sequenceWeAreLookingFor[0].ToString() + sequenceWeAreLookingFor[1].ToString() + sequenceWeAreLookingFor[2].ToString())); }
public static long GetSolutionOfProblem47() { var consecutiveNumbers = 4; var numberOfDistinctPrimeFactors = 4; return(PrimeHelper.GetFirstNumberOfConsecutiveNumbersToHaveMDistinctPrimeFactors(consecutiveNumbers, numberOfDistinctPrimeFactors)); }
public static long GetLengthOfNumberSpiralForWhichPercentageOfPrimesOnDiagonalsIsLowerThanLimit(int desiredUpperBoundPercentagePrimes) { var numberOfDiagonalNumbers = 5; var numberOfPrimesOnDiagonals = 3; int increment = 2; int currentPosition = 9; while (!(numberOfPrimesOnDiagonals * 100 <= numberOfDiagonalNumbers * desiredUpperBoundPercentagePrimes)) { increment += 2; // The odd squares lie on the bottom right diagonal, so these cannot be prime. for (int i = 0; i < 3; i++) { currentPosition += increment; if (PrimeHelper.IsPrime(currentPosition)) { numberOfPrimesOnDiagonals++; } } currentPosition += increment; numberOfDiagonalNumbers += 4; } return(increment + 1); }
public static int GetNumberOfDivisors(long n) { var numberOfDivisors = 1; var primeFactorization = PrimeHelper.GetPrimeFactorization(n); foreach (int key in primeFactorization.Keys) { numberOfDivisors *= primeFactorization[key] + 1; } return(numberOfDivisors); }
public static (int, int) ToLowestTerms(int numerator, int denominator) { var primeFactorizationNumerator = PrimeHelper.GetPrimeFactors(numerator); var primeFactorizationDenominator = PrimeHelper.GetPrimeFactors(denominator); var commonPrimes = primeFactorizationNumerator.Where(prime => primeFactorizationDenominator.Remove(prime)); foreach (int prime in commonPrimes) { numerator /= prime; denominator /= prime; } return(numerator, denominator); }
public static long GetSolutionOfProblem37() { return(PrimeHelper.GetAllTruncatablePrimes().Sum()); }
public static long GetSolutionOfProblem35() { var max = 1000000; return(PrimeHelper.GetListOfCircularPrimesBelowMax(max).Count()); }
public static long GetSolutionOfProblem97() { return(PrimeHelper.LastTenDigitsOfMassiveNonMersennePrimeProblem97()); }
public static long GetSolutionOfProblem69() { var max = 1000000; return(PrimeHelper.HighestProductOfFirstPrimesBelowMax(max)); }
public static long GetSolutionOfProblem51() { var desiredSizeOfFamily = 8; return(PrimeHelper.FirstPrimeWhichHasDesiredSizeOfFamilyByReplacingSomeDigitsBySameNumber(desiredSizeOfFamily)); }
public static long GetSolutionOfProblem50() { var max = 1000000; return(PrimeHelper.PrimeBelowMaxWhichCanBeWrittenAsSumOfMostConsectivePrimes(max)); }
public static long GetSolutionOfProblem46() { return(PrimeHelper.GetFirstCounterExampleGoldbachsOtherConjecture()); }
private static List <long> GetPandigitalPrimes(List <char> characterAllowedTouse) { return(GetPandigitalNumbers(characterAllowedTouse) .Select(number => long.Parse(number)).Where(number => PrimeHelper.IsPrime(number)).ToList()); }