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

JavaScriptで指定した数より大きい最小の素数を求める方法

本記事では、正の整数を第一引数(かつ唯一の引数)として受け取るJavaScript関数の作成方法を解説します。

この関数の目的は、引数として渡された数値よりも大きい数の中から、最小の素数を見つけることです。

たとえば、入力が次の場合:

const num = 18;

期待される出力は次のとおりです。

const output = 19;

18より大きい最小の素数は19であるため、結果は19になります。

コード例

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

const num = 18;
const justGreaterPrime = (num) => {
    for (let i = num + 1;; i++) {
        let isPrime = true;
        for (let d = 2; d * d <= i; d++) {
            if (i % d === 0) {
                isPrime = false;
                break;
            };
        };
        if (isPrime) {
            return i;
        };
    };
};
console.log(justGreaterPrime(num));

コードの仕組み

  • 外側のループ: 引数numに1を加えた値から順に整数を調査していきます。終了条件を設けておらず、素数が見つかった時点でreturn文により処理を抜ける構造です。
  • 内側のループ: 調査中の数値iが素数かどうかを判定します。ここでは「試し割り法」を採用し、2から√iまでの整数で割り切れるかを確認しています。d * d <= iという条件式により、平方根まで調べれば十分なため、計算量を効率的に抑えられます。
  • 素数判定: 1つでも割り切れる約数が見つかればisPrimeをfalseにし、breakでループを即座に中断します。
  • 戻り値: ループ完了後もisPrimeがtrueのままなら、その数iは素数であるため、すぐに値を返します。

出力

コンソールへの出力は以下のとおりです。

19
  1. 【JavaScript】10進数を切り上げる関数を自作する方法|Math.ceil相当の実装を解説

    JavaScriptでは、Mathオブジェクトに標準で用意されているMath.ceil()メソッドを使うことで、小数を簡単に切り上げることができます。本記事では、このceil相当の機能を持つ関数を自分で実装する方法を、コード例とともにわかりやすく解説します。 課題 私たちが作成するのは、JavaScriptのMathクラスに属するような関数です。 この関数は、呼び出された10進数(小数)に対して、それ以上で最も近い整数、つまり「切り上げた値」を返す必要があります。 また、渡された数値がすでに整数である場合は、その値をそのまま返す仕様とします。 解決のアプローチ この問題は、次の手順で解

  2. 【JavaScript】同じ数字の並び替えで作れる「ちょうど大きい数」を見つける方法

    問題数値 num を唯一の引数として受け取るJavaScript関数を作成する必要があります。この関数が返すべきのは、入力された数値とまったく同じ数字だけ(すべての桁を使い切り、余分な数字を含まない)で構成され、入力値よりちょうど一つ大きい数です。そのような数が存在しない場合は -1 を返します。例const num = 5656;この場合の出力は以下のようになります。const output = 5665;出力の解説5665 は 5656 と同じ数字(5、6、5、6)だけで構成されており、5656 より大きい数の中で最小のものであるためです。アプローチ1:全探索(シンプルな方法)最も直感的な