Project Euler问题的JavaScript

Soc*_*cus 3 javascript

我试图从Project Euler 解决Q10.我使用JavaScript和Sieve of Atkins算法来解决问题.当我在浏览器(Safari和FF)上运行代码时,浏览器会提示脚本没有响应.即使我让脚本继续下去,我也没有得到答案.我知道有同样的Project Euler问题的线程.

我的问题是: -

1.到目前为止,JavaScript能够为浏览器解决这些复杂的数学问题吗?

2.还有其他环境我可以测试我的JavaScript程序吗?

谢谢你们.

小智 6

项目欧拉的目标是让你以数学方式思考.想想暴力强迫,你会被困住.这是Eratosthenes筛选的实现


function problem10() {

    var i, j, k, l = Math.floor((2000000-1)/2), a = [];
    for (i = 0; i < l; i++) {
        a[i] = true;
    } var m = Math.sqrt(2000000);
    for (i = 0; i <= m; i++) {
        if (a[i]) {
            j = 2 * i + 3;
            k = i + j;
            while (k < l) {
                a[k] = false;
                k += j;
            }
        }
    } var s = 2;
    for (i = 0; i < l; i++) {
        if (a[i]) {
            s += 2 * i + 3;
        }
    }
    return s;

}

var d1 = new Date().getTime();
var answer = problem10();
var d2 = new Date().getTime();

console.log('Answer:' + answer + ' time:' + (d2 - d1));
Run Code Online (Sandbox Code Playgroud)

您可以在chrome开发人员的控制台上运行它(Ctrl + Shift + J).猜猜看,它的时钟为0.1秒.


Jus*_*tin 5

  1. 我认为其功能与其他任何功能一样 - 近年来由于网络使用量的增加,JavaScript实现已经进行了大量优化.

  2. 您可以使用node.jsCScript(Windows脚本主机的命令行版本 - 这是Windows的一部分提供).

如果我记得我的那个问题的实现(在Python中)比我想象的要慢得多.可能性很慢是因为你的算法而不是语言.