【JavaScript】指定された範囲の素数を列挙するプログラムと仕組み

【JavaScript】指定された範囲の素数を列挙するプログラムと仕組み

このページでは、指定された範囲内の素数を列挙するためのJavaScriptプログラムについて解説します。 素数とは、1とその数自身以外の約数を持たない、1より大きな自然数です。たとえば、2、3、5、7などが素数です。

素数とは

素数は、1とその数自身以外の約数を持たない自然数です。例えば、2、3、5、7、11などが素数に該当します。逆に、4、6、8、9などは素数ではありません。素数は数論で重要な役割を果たし、暗号理論や整数論などで広く応用されています。

範囲指定方法

プログラムでは、素数を列挙する範囲を指定する必要があります。たとえば、1から100までの素数を列挙したい場合、範囲の開始点と終了点をプログラムに渡す必要があります。一般的に、最小値(開始点)と最大値(終了点)を指定する方法を取ります。

素数判定法

素数を判定する方法にはいくつかのアルゴリズムがありますが、最も基本的な方法は以下のように、対象となる数が1とその数自身以外で割り切れるかをチェックするものです。

    function isPrime(n) {
      if (n <= 1) return false; // 1以下の数は素数ではない
      for (let i = 2; i <= Math.sqrt(n); i++) {
        if (n % i === 0) return false; // 割り切れた場合は素数ではない
      }
      return true;
    }
  

上記のコードは、与えられた数nが素数かどうかを判定します。ここでは、2からnの平方根までの数で割り切れるかをチェックします。これは、余分な計算を避けるための最適化です。

コード例

以下は、指定された範囲の素数を列挙するためのJavaScriptコードです。最小値と最大値を引数として受け取り、その範囲内のすべての素数を出力します。

    function listPrimesInRange(start, end) {
      let primes = [];
      for (let i = start; i <= end; i++) {
        if (isPrime(i)) {
          primes.push(i);
        }
      }
      return primes;
    }

    // 使用例
    console.log(listPrimesInRange(1, 100)); // 1から100までの素数を列挙
  

コード解説

上記のコードは、まず素数判定を行う関数 isPrime を定義しています。この関数は、与えられた数が素数かどうかを判定し、素数であれば true を返し、そうでなければ false を返します。

次に、listPrimesInRange 関数が範囲 start から end までの整数を順番にチェックします。各数について isPrime 関数を呼び出し、素数であればその数を配列 primes に追加します。最終的に、素数の配列を返します。

たとえば、次のように使用します。

    console.log(listPrimesInRange(10, 50)); // 10から50までの素数を列挙
  

このコードを実行すると、コンソールに次のような出力が表示されます。

    [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]
  

まとめ

本記事では、JavaScriptを使用して指定された範囲の素数を列挙する方法について解説しました。まず素数とは何かを理解し、その後、素数判定の基本的な方法を紹介しました。そして、実際に指定した範囲内の素数を列挙するプログラムをコード例として示しました。この方法を応用することで、他の数値範囲や条件に合わせた素数列挙が可能となります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です