Sieve of Eratosthenes algorithm in JavaScript running endless for large number

后端 未结 7 1985
孤街浪徒
孤街浪徒 2020-11-30 02:47

I have been trying to write Sieve of Eratosthenes algorithm in JavaScript. Basically I just literally followed the steps below:

  1. Create a list of consecutive in
相关标签:
7条回答
  • 2020-11-30 03:20
    function sieveOfEratosthenes(num, fromSt = null) {
    let boolArr = Array(num + 1).fill(true); // Taking num+1 for simplicity
    boolArr[0] = false;
    boolArr[1] = false;
    
    for (
        let divisor = 2;
        divisor * divisor <= num;
        divisor = boolArr.indexOf(true, divisor + 1)
    )
        for (let j = 2 * divisor; j <= num; j += divisor) boolArr[j] = false;
    
    let primeArr = [];
    for (
        let idx = fromSt || boolArr.indexOf(true);
        idx !== -1;
        idx = boolArr.indexOf(true, idx + 1)
    )
        primeArr.push(idx);
    
    return primeArr;
    }
    
    0 讨论(0)
提交回复
热议问题