Как оптимизировать задачу проекта euler # 10 для среды FCC? - PullRequest
0 голосов
/ 25 февраля 2019

// следующий код генерирует точный ответ в моем редакторе, но я хочу оптимизировать код для прохождения тестов в среде freecodecamp.Кто-нибудь может пролить свет на эту проблему?

            function isPrime(param) {
                if (param == 2) {
                    return true;
                }
                if (param % 2 == 0) {
                    return false;
                }
                var max = Math.ceil(Math.sqrt(param));
                for (var i = 3; i <= max; i += 2) {
                    if (param % i == 0) {
                        return false;
                    }
                }
                return true;
            }


            function primeSummation(n) {
                var primeArr = [];
                for (var i = 2; i < n; i++) {
                    if (isPrime(i)) {
                        primeArr.push(i);
                    }
                }
                var sumArray = primeArr.reduce(function add(a, b) {
                    return a + b;
                }, 0);
                console.log(sumArray)
                return sumArray;
            }

            primeSummation(2000000);

1 Ответ

0 голосов
/ 25 февраля 2019

Если у вас есть большой диапазон натуральных чисел (1 ... n), чтобы проверить, являются ли они простыми, то неэффективно проверять их по отдельности, как вы делаете с isPrime.Будет более эффективно выполнить сито Эратосфена в этом диапазоне и затем вычислить сумму из полученного массива.

...