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

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

問題

JavaScriptで、ある数値 n を受け取る関数を作成することを考えます。この関数は、n より大きい数の中で最小となる素数を返す必要があります。

アプローチ

まず、与えられた数が素数かどうかを判定する補助関数 isPrime を用意します。素数判定では、2 からその数の平方根まで順に割り切れるかを確認すれば十分です。平方根以降の因数は必ずペアが存在するため、ここまで調べれば判定できます。これにより計算量を大幅に抑えられます。

次に、nextPrime 関数の中で、引数の数値を1ずつ増やしながら isPrime で判定を行い、最初に見つかった素数を返します。

コード例

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

const num = 101;
const isPrime = (num) => {
   let sqrtnum = Math.floor(Math.sqrt(num));
   let prime = num !== 1;
   for(let i = 2; i < sqrtnum + 1; i++){
      if(num % i === 0){
         prime = false;
         break;
      };
   };
   return prime;
}
const nextPrime = (num = 1) => {
   while(!isPrime(++num)){
   };
   return num;
};
console.log(nextPrime(num));

コードの解説

isPrime 関数では、まず Math.sqrt を使って入力値の平方根を求め、小数点以下を切り捨てています。初期値として prime = num !== 1 を設定することで、1 は素数ではないことが自動的に処理されます。ループ内で一度でも割り切れる数が見つかれば即座に false を返して処理を終了します。

nextPrime 関数では、前置インクリメント演算子 ++num を使って数値を先に1増やしてから素数判定を行っています。これにより、元の数値自体ではなく「その次」から探索が始まります。

出力

上記のコードを実行すると、コンソールには以下の結果が出力されます。

103

101 の次に現れる素数は 102 ではなく 103(101 と 104 の間で唯一の素数)であるため、正しく動作していることがわかります。

  1. JavaScriptで数値が三角数かどうかを判定する方法

    三角数(Triangular Number)とは? 三角数とは、点を正三角形の形に敷き詰めたときに現れる数のことです。n番目の三角数は「1からnまでの自然数の合計」として表され、次の公式で求められます。 Tn = n(n+1) / 2 具体的な三角数は 1, 3, 6, 10, 15, 21, 28 … と続きます。例えば 10 は、各辺に4個の点を配置した正三角形を構成できるため、三角数です。 問題 数値を引数として受け取り、その数値が三角数であれば true を、そうでなければ false を返すJavaScript関数を実装します。 判定の考え方 n(n+1)/2 = num となる正

  2. 【JavaScript】合計が指定した数値になるすべての素数ペアを見つける方法

    問題の概要JavaScriptで関数を作成します。この関数は引数として数値 n を受け取り、合計すると n になり、しかも両方が素数であるような数値ペアをすべて配列として返す必要があります。例えば、入力が 26 の場合、「23 + 3」と「19 + 7」はいずれも合計が 26 で、かつ両方とも素数であるため、該当するペアとなります。コード例以下がその実装コードです。const num = 26; const isPrime = (n) => {     if (n % 2 === 0) return false;