【发布时间】:2019-01-07 07:40:53
【问题描述】:
我正在为 JS 开发一些典型的 kata,我遇到了一个想要一个非常大的数的所有素数。我试过following in JSFiddle。
findPrimes(max){
let dont = [], primes = [];
for (var i = 2; i <= max; i++) {
if (!dont[i]) {
primes.push(i);
for (var j = i; j <= max; j += i) dont[j] = true;
}
}
}
这在大约this.findPrimes(51475143); 之前工作得相对较好,但是,如果我尝试说...this.findPrimes(851475143); 我会感到悲伤,因为 JS 引擎似乎崩溃了。我知道我可以直接做 V8 并挤出一点,甚至可能转向基于 C 的节点模块,但为了简单起见,如果可能的话,我想将它保留在浏览器中。如果没有,并且可以提供证据,我会接受这个答案。
【问题讨论】:
-
嗯,好吧,不管用什么方法,一个包含 3,084,205 项的数组会有点笨拙……我不认为 Javascript 是计算海量数据的正确工具
-
你应该使用segmented sieve。
-
primes-generator 你能不能给你更好的性能,前提是你不想一次把所有的值都存入内存。
标签: javascript browser vuejs2 primes