Могу ли я сделать этот основной код Finder более лаконичным? - PullRequest
0 голосов
/ 07 февраля 2020

Я чувствую, что у меня есть дополнительная переменная, где-то.

В частности, найденная переменная. Есть более короткий или более эффективный способ написать это?

// 2, 3, 5, 7, 11, 13, 17

function findPrimes(N){
  const primes = [2];

  for(let i = 2; i <= N; i++){
    let found = true;

    for(let j = 0; j < primes.length; j++){
      if( i % primes[j] === 0){
        found = false;
        break;
      }  
    }
    if(found){
      primes.push(i);
    }
  }
  return primes;
}

findPrimes(100);

1 Ответ

1 голос
/ 07 февраля 2020

Зависит от того, насколько многословным и буквальным вы хотите, чтобы был код. Например, это должен быть точный эквивалент вашего алгоритма:

// 2, 3, 5, 7, 11, 13, 17

function findPrimes(N) {
  const primes = [2];

  for (let i = 3; i <= N; i++) {
    if (!primes.some(n => i % n === 0)) {
      primes.push(i);
    }

  }

  return primes;
}

console.log(findPrimes(100));
...