Exemplo n.º 1
0
 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}");
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 public GoldbachTermFinder(GoldbachBuckets goldbachBuckets,
                           Dictionary <int, List <int> > results)
 {
     Results = results;
     CurrentGoldbachBuckets = goldbachBuckets;
 }
Exemplo n.º 4
0
 public static GoldbachBuckets StepDown(this GoldbachBuckets origBucket)
 {
     return(new GoldbachBuckets(midPoint: origBucket.LowLimit,
                                bucketSize: origBucket.BucketSize,
                                hiBuckets: origBucket.LowBuckets));
 }