【问题标题】:How to optimize the project euler #10 problem for FCC environment?如何针对 FCC 环境优化项目 euler #10 问题?
【发布时间】:2019-02-25 09:48:52
【问题描述】:

// 以下代码在我的编辑器中生成准确的答案,但我想优化代码以通过 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);

【问题讨论】:

  • 你可以检查这个link来确定数字是否是素数&也正常for会比reduce更好
  • 欢迎来到 StackOverflow。很高兴你加入了训练营。有很多东西要学,我一直祈祷。如果您正在寻找计算素数的最佳算法,此问题已在 StackOverflow 上得到解答:stackoverflow.com/questions/1801391/…
  • 我会将 primeArr 提供给 isPrime 函数,此时您可以针对每个奇数检查素数

标签: javascript optimization primes


【解决方案1】:

如果您有很长范围的自然数 (1...n) 来检查它们是否为素数,那么像使用 isPrime 那样单独测试它们是没有效率的。在该范围内执行sieve of Eratosthenes 然后从结果数组中计算总和会更有效。

【讨论】:

    猜你喜欢
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多