const LinearSieve = (n) => { /* * Calculates prime numbers till a number n * Time Complexity: O(n) * Explanation: https://cp-algorithms.com/algebra/prime-sieve-linear.html * :param n: Number up to which to calculate primes * :return: A list containing only primes */ const isnPrime = new Array(n + 1) isnPrime[0] = isnPrime[1] = true const primes = [] for (let i = 2; i <= n; i++) { if (!isnPrime[i]) primes.push(i) for (const p of primes) { const k = i * p if (k > n) break isnPrime[k] = true if (i % p === 0) break } } return primes } export { LinearSieve }