public long SmallestNumberDividedByAllNumbers(long UpToNumber) { long[] maxCountOfPrimNumber = new long[UpToNumber + 1]; for (int i = 2; i <= UpToNumber; i++) { var group = Primes.GetPrimeFactorsInNumber(i).GroupBy(e => e); foreach (var g in group) { if (maxCountOfPrimNumber[g.Key] < g.Count()) { maxCountOfPrimNumber[g.Key] = g.Count(); } } } long smallestNumber = 1; for (int i = 2; i <= UpToNumber; i++) { for (int ii = 0; ii < maxCountOfPrimNumber[i]; ii++) { smallestNumber *= i; } } return(smallestNumber); }
private static List <int> ConvertToPrimeList(List <int> nrliste) { if (nrliste.Count() > 0) { List <long> liste = new List <long>(); foreach (int item in nrliste) { liste.AddRange(Primes.GetPrimeFactorsInNumber(item)); } nrliste = liste.Select(e => (int)e).ToList(); } return(nrliste); }
public int GetNumberWithOneIntegerRightTriangles(int maxLengde) { Dictionary <long, long> lenDict = new Dictionary <long, long>(); for (int n = 1; n < 1000; n++) { List <long> nPrimes = Primes.GetPrimeFactorsInNumber(primeFactors, primeDict, n); for (int m = n + 1; m < 1000; m++) { //en og kun skal være par.. if ((m + n) % 2 == 0) { continue; } //m og n skal være coprime List <long> mPrimes = Primes.GetPrimeFactorsInNumber(primeFactors, primeDict, m); if (nPrimes.Any(np => m % np == 0)) { continue; } //Pythagorean triangles :https://en.wikipedia.org/wiki/Integer_triangle int a = m * m - n * n; int b = 2 * m * n; int c = m * m + n * n; int lengde = a + b + c; int step = lengde; while (lengde <= maxLengde) { if (lenDict.ContainsKey(lengde)) { lenDict[lengde] = lenDict[lengde] + 1; } else { lenDict.Add(lengde, 1); } // hvis a,b,c er løsning , er også 2a,2b,2c løsing ,osv... lengde += step; } } // for m } // for n //finn antall med bare en løsning/lengde return(lenDict.Where(e => e.Value == 1).Count()); }
//hvis Numerator har felles primetall med denominator, kan brøken reduseres.. private int GetNoneReducableInInterval(long numeratorStart, long numeratorEnd, int denominator) { int counter = 0; List <long> PrimeFactorsInDenominator = Primes.GetPrimeFactorsInNumber(denominator).ToList(); for (long numerator = numeratorStart; numerator <= numeratorEnd; numerator++) { if (!PrimeFactorsInDenominator.Any(p => numerator % p == 0)) { counter++; } } return(counter); }
public long Largest(long below) { return(Primes.GetPrimeFactorsInNumber(below).Max()); }
public void TestPrimeIsNotPrimet(long value) { List <long> list = Primes.GetPrimeFactorsInNumber(value); Assert.False(Primes.IsPrime(value)); }
public void TestPrimeList(long value, int len) { List <long> list = Primes.GetPrimeFactorsInNumber(value); Assert.Equal(len, list.Count); }