プログラミング JavaScript

【Javascript】素数かどうかを判定するロジック

こんにちは!

今回は「Javascriptで素数かどうかを判定するロジック」についてお伝えしたいと思います。

最近、アルゴリズムの勉強をしておりまして、素数を判定するロジックを作成したので共有いたします。

素数はRSA暗号で使われたりと、意外と身近に使われてるようですね。

まず、素数とは?(分かってるという方は飛ばしてください〜)

wikipediaは以下のように定義されてました。

素数(そすう、英: primeあるいはprime number)とは、2 以上の自然数で、正の約数が 1 と自分自身のみであるもののことである。正の約数の個数が 2 である自然数と言い換えることもできる。1 より大きい自然数で素数でないものは合成数と呼ばれる。

参考:wikipedia

Javascriptで素数かどうかを判定するロジック

素数を算出するポイント

ポイント

合成数(1 より大きい自然数で素数でないもの)でないことを確かめる

合成数は2以上√N以下までの数で割り切れる

実際の素数判定のアルゴリズムを以下に示します。

// 素数かどうかを判定する
const isPrime = (n) => {
  for (let i=2; i*i<=n; i++) { // iは2〜√nまで+1ずつ変化
    if (n % i === 0) return false;
  }
  return true;
};
console.log(isPrime(4)) // false
console.log(isPrime(5)) // true
console.log(isPrime(137)) // true

 

これで最小の計算量で素数かどうかを判定することができました。
ポイントはfor文の終了をnではなく、√nとする点になります。

以上、お疲れさまでした〜🍵

-プログラミング, JavaScript

© 2024 エンジニア×ライフハック Powered by AFFINGER5