我需要计算小于或等于某个 N 的素数个数,这就是素数计数函数或 PI 函数。我有这个,但运行速度太慢:
function PI(x) {
var primes = 4;
for (var i = 3; i <= x; i += 2) {
if (i % 3 === 0 || i % 5 === 0 || i % 7 === 0) continue;
var r = ~~Math.sqrt(i), p = true;
for (var j = 2; j <= r; j++) {
if (i % j === 0) {
p = false;
break;
}
}
if (p)
primes++;
}
return primes;
} …Run Code Online (Sandbox Code Playgroud) javascript ×1