var fs = require('fs');
var outfile = "primes.txt";
function getPrimes(max) {
var primeSieve = [], i, j, primes = [];
for (i = 2; i <= max; ++i) {
if (!primeSieve[i]) {
// i has not been marked - it is prime
primes.push(i);
for (j = i << 1; j <= max; j += i) {
primeSieve[j] = true;
}
}
}
return primes;
}
fs.writeFileSync(outfile, getPrimes(1000).slice(0,100) + ",");
console.log("Script: " + __filename + "\nWrote: " + getPrimes(1000).slice(0,100) + "To: " + outfile);
我有上面的一段代码,我修改它以产生输出(由其他人提供的主要算法)。我是 Javascript 新手,不确定以下行实际上在做什么以及 << 运算符的含义(我无法在 Javascript 网站上找到)。
for (j = i << 1; j <= max; j += i)
我知道它将主 primeSieve 数组中的相关数字标记为真,这样它们就不会填充素数数组,但是我不知道它是如何做到的。