JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで数の素数階乗(プリモリアル)を求める方法

素数階乗(プリモリアル:primorial)とは、ある数 n に対して、最初の n 個の素数をすべて掛け合わせた値のことです。

素数階乗の計算例

例えば、n = 4 の場合を見てみましょう。

このとき、primorial(n) の出力は以下のようになります。

2 * 3 * 5 * 7 = 210

つまり、最初の4つの素数「2、3、5、7」を掛け合わせた 210 が答えとなります。

実装のポイント

今回は、数値を引数として受け取り、その素数階乗を返す JavaScript 関数を作成します。実装には以下のステップが必要です。

  • isPrime関数: 与えられた数が素数かどうかを判定する補助関数
  • primorial関数: 素数を順番に見つけては積に掛け合わせていく本体の関数

コード例

以下が実際のコードです。

const num = 4;

// 素数かどうかを判定する関数
const isPrime = n => {
  if (n === 1) {
    return false;
  } else if (n === 2) {
    return true;
  } else {
    for (let x = 2; x < n; x++) {
      if (n % x === 0) {
        return false;
      }
    }
    return true;
  }
};

// 素数階乗を求める関数
const primorial = num => {
  if (num === 0) {
    return 0;
  }
  let count = 1, flag = 3;
  let prod = 2;
  while (count < num) {
    if (isPrime(flag)) {
      prod *= flag;
      count++;
    };
    flag++;
  };
  return prod;
};

console.log(primorial(num));

コードの解説

  • isPrime: 1は素数ではないため false を返し、2は最小の素数なので true を返します。それ以外の数については、2から順に割り切れる数があるかを確認します。
  • primorial: 最初の素数である 2 を初期値として積(prod)に設定し、候補となる数(flag)を 3 から順に増やしながら素数判定を行います。素数が見つかるごとに積に掛け、カウント(count)が指定された n に達した時点で結果を返します。

出力結果

コンソールには以下のように出力されます。

210

このように、素数判定とループ処理を組み合わせることで、任意の n に対する素数階乗を簡単に求めることができます。

  1. JavaScriptでドキュメント内のリンク数を取得する方法

    JavaScriptでドキュメント内のリンク数を取得するJavaScriptのDOM(Document Object Model)には、ドキュメントに関するさまざまな情報を取得するためのプロパティが多数用意されています。その中でもdocument.links.lengthを使用すると、ドキュメント内に含まれるリンク(<a>タグ)の総数を簡単に取得できます。document.linksは、href属性を持つすべてのアンカー要素を格納したHTMLCollectionを返します。そのlengthプロパティを参照することで、リンクの総数がわかります。この操作はページの通常の動作に影響を与え

  2. JavaScriptの数値(Number)の基本と実践サンプルコード

    JavaScriptでは、整数も小数もすべて「Number」型として扱われます。この記事では、数値変数の定義方法と、それらを使った簡単な演算の例を、動作するHTMLサンプルコードとともに紹介します。サンプルコード以下は、JavaScriptで数値を扱う基本的な例です。整数(22、99)と小数(1.523)を変数に格納し、ボタンをクリックすると画面に表示する仕組みになっています。<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport co