Exemple #1
0
        static void Calculate(PrimeCalculator calculator, List<ulong> allPrimes, List<ulong> currentPrimes, int primeIndex, ulong currentMul, ulong limit)
        {
            if (Check(currentPrimes, calculator))
                sum += currentPrimes.Prod();

            for (int i = primeIndex; i < allPrimes.Count; i++)
            {
                if (currentMul * allPrimes[i] >= limit)
                    break;
                var newPrimes = new List<ulong>(currentPrimes);
                newPrimes.Add(allPrimes[i]);
                Calculate(calculator, allPrimes, newPrimes, i+1, currentMul*allPrimes[i], limit);
            }
        }