Ejemplo n.º 1
0
 private static ulong CalculateByFactor(ulong a, ulong factors, ulong maxPrime, List<ulong> primes)
 {
     ulong sum = 0;
     var b = a + (ulong)factors;
     while (b <= maxPrime)
     {
         if (primes.BinarySearch(b) > -1)
         {
             double ratio = (double)(b + 1) / (a + 1);
             double nextPrime = ratio * (b + 1) - 1;
             if (nextPrime > maxPrime)
                 break;
             ulong c = (ulong)Math.Round(nextPrime);
             if (primes.BinarySearch(c) > -1)
             {
                 if (CheckABC(a, b, c))
                     sum += a + b + c;
             }
         }
         b += factors;
     }
     return sum;
 }
Ejemplo n.º 2
0
 private static ulong CalculateByPrimes(int i, List<ulong> primes, ulong a, ulong maxPrime)
 {
     ulong sum = 0;
     for (int j = i + 1; j < primes.Count - 1; j++)
     {
         var b = primes[j];
         double ratio = (double)(b + 1) / (a + 1);
         double nextPrime = ratio * (b + 1) - 1;
         if (nextPrime > maxPrime)
             break;
         ulong c = (ulong)Math.Round(nextPrime);
         if (primes.BinarySearch(c) > -1)
         {
             if (CheckABC(a,b,c))
                 sum += a + b + c;
         }
     }
     return sum;
 }