Разложение на простые множители: делим на 2, затем на нечётные до √n, остаток > 1 — тоже множитель.
functionprimeFactors(n) {
const res = [];
n = Math.abs(n);
if (n < 2) return res;
while (n % 2 === 0) {
res.push(2);
n /= 2;
}
for (let i = 3; i * i <= n; i += 2) {
while (n % i === 0) {
res.push(i);
n /= i;
}
}
if (n > 1) res.push(n);
return res;
}
primeFactors(84); // [2, 2, 3, 7]
Сложность
Около O(√n) по времени для одного числа.
Итог
Trial division до корня — достаточно для типичного фронтенд-скрининга.