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

JavaScriptで指定した数値より大きい最初の素数を見つける方法

本記事では、JavaScriptで数値を引数として受け取り、その数より大きい最初の素数を返す関数の作成方法を解説します。

例えば、入力が24の場合、24より大きい最初の素数は29であるため、出力は29になります。

素数とは

素数とは、1とその数自身以外に正の約数を持たない、1より大きい自然数のことです。ある数nが素数かどうかを判定するには、2からn−1までの整数で順に割り算を行い、1つも割り切れる数がなければ素数と判断できます。

コード例

const num = 24;
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 nearestPrime = num => {
    while(!isPrime(++num)){};
    return num;
};
console.log(nearestPrime(24));

コードの解説

isPrime関数は、引数nが素数かどうかを判定します。nが1の場合はfalse、2の場合はtrueを返します。それ以外の場合は、2からn−1までの各整数xでnを割り、余りが0になるものがあればfalseを返します。最後まで割り切れる数が見つからなければ、その数は素数であるためtrueを返します。

nearestPrime関数は、前置インクリメント(++num)によってnumを1ずつ増やしながら、isPrimeがtrueを返すまでwhileループを繰り返します。ループを抜けた時点のnumが、元の数より大きい最初の素数となります。

なお、素数判定では√nまでの約数を確認すれば十分なため、大きな数を扱う場合はforループの条件を「x * x <= n」に変更すると、処理を大幅に高速化できます。

出力結果

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

29
  1. JavaScriptで指定した数より大きい最小の素数を見つける方法

    問題JavaScriptで、ある数値 n を受け取る関数を作成することを考えます。この関数は、n より大きい数の中で最小となる素数を返す必要があります。アプローチまず、与えられた数が素数かどうかを判定する補助関数 isPrime を用意します。素数判定では、2 からその数の平方根まで順に割り切れるかを確認すれば十分です。平方根以降の因数は必ずペアが存在するため、ここまで調べれば判定できます。これにより計算量を大幅に抑えられます。次に、nextPrime 関数の中で、引数の数値を1ずつ増やしながら isPrime で判定を行い、最初に見つかった素数を返します。コード例以下が実際のコードです。co

  2. JavaScriptで指定した間隔(ギャップ)を持つ2つの素数のペアを見つける方法

    問題 数値 gap を第一引数として、また2つの数値からなる範囲配列を第二引数として受け取るJavaScript関数を作成する必要があります。この関数は、指定された範囲内に存在し、かつ絶対差が gap と一致する素数のペアを見つけて返すものです。 例えば、gap = 4、範囲が [20, 200] の場合、「37」と「41」はどちらも素数であり、その差はちょうど4であるため、条件を満たすペアとなります。 解決のアプローチ この問題は以下のステップで解決できます。 素数判定: 与えられた数が素数かどうかを判定するヘルパー関数を用意します。 素数の収集: 指定された範囲内のすべての素数を配列に