Learning to Code

プログラミング勉強記録

【JavaScript】2〜nまでの素数を全て表示するには?

タイトル通り、2から任意の数(n)までの間にある素数を全て表示する関数を作ったので公開。
といっても1つの関数で実現したわけではないですが・・・  

let n = 0;

function testPrime(n) {     // nが素数ならコンソールに表示
  if (n === 1) {
    return false;
  } else if (n === 2) {
    console.log(n);
  } else {
    for (let x = 2; x < n; x++) {
      if (n % x === 0) {
        return false;
      }
    }
  console.log(n);
  }
}

function doTestPrime() {

let i = 0;
let uptoNumbers = [];  // 空の配列を作る

n = prompt("数を入力して下さい。");

while (n > 1) {      // n, n-1, n-2...というふうに全ての数を配列に加える
  uptoNumbers.push(n);
  n--; 
}

let arrayLength = uptoNumbers.length;

while (i < arrayLength) {
  testPrime(uptoNumbers[i]); // 配列の要素全てに対して素数かどうか確認する
  i++;
}
}

doTestPrime();

多分もっと簡単にやる方法があるはずだけど、とりあえず数時間悩んで作ったので、
しまっておくのももったいない!と思い公開。