public static void AddTerm(this GoldbachBuckets goldbachBuckets, int evenNum, int smallerPrime) { if (evenNum < goldbachBuckets.LowLimit) { throw new Exception($"evenNum: {evenNum} is less than LowLimit: {goldbachBuckets.LowLimit}"); } if (evenNum < goldbachBuckets.MidPoint) { goldbachBuckets.LowBuckets[evenNum].Add(smallerPrime); return; } if (evenNum < goldbachBuckets.HiLimit) { goldbachBuckets.HiBuckets[evenNum].Add(smallerPrime); return; } throw new Exception($"evenNum: {evenNum} is >= HiLimit:{goldbachBuckets.HiLimit}"); }
public static GoldbachBuckets FillGoldbachBuckets(this GoldbachBuckets goldbachBuckets) { var primeLimit = goldbachBuckets.MidPoint; var chunks = PrimeNumbers.CompPrimeBins(primeLimit, goldbachBuckets.BucketSize * 2) .ToList(); foreach (var compL in chunks) { foreach (var lowerItem in compL.Item1) { foreach (var upperItem in compL.Item2) { goldbachBuckets.AddTerm(lowerItem + upperItem, lowerItem); } } } return(goldbachBuckets); }
public GoldbachTermFinder(GoldbachBuckets goldbachBuckets, Dictionary <int, List <int> > results) { Results = results; CurrentGoldbachBuckets = goldbachBuckets; }
public static GoldbachBuckets StepDown(this GoldbachBuckets origBucket) { return(new GoldbachBuckets(midPoint: origBucket.LowLimit, bucketSize: origBucket.BucketSize, hiBuckets: origBucket.LowBuckets)); }