线性筛欧模板,算法复杂的O(n)
function init_prime(n) {
let mu = Array(n + 1).fill(0);
let prime = Array(n + 1).fill(0);
mu[1] = 1;
for (i = 2; i <= n; i++) {
if (!prime[i]) {
prime[++prime[0]] = i;
mu[i] = -1;
}
for (j = 1; prime[j] * i <= n; j++) {
prime[prime[j] * i] = 1;
if (i % prime[j] == 0) {
mu[prime[j] * i] = 0;
break;
}
mu[prime[j] * i] = -mu[i];
}
}
return mu;
}
function μ(num) {
return init_prime(num)[num];
}
本文详细介绍了线性筛欧几里得算法的实现过程,该算法用于高效地找到小于给定数n的所有质数,并计算莫比乌斯函数值。通过填充mu和prime数组,算法复杂度为O(n),适用于大规模质数筛选和莫比乌斯函数计算。

2999

被折叠的 条评论
为什么被折叠?



