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
-
JavaScriptで指定した数より大きい最小の素数を見つける方法
問題JavaScriptで、ある数値 n を受け取る関数を作成することを考えます。この関数は、n より大きい数の中で最小となる素数を返す必要があります。アプローチまず、与えられた数が素数かどうかを判定する補助関数 isPrime を用意します。素数判定では、2 からその数の平方根まで順に割り切れるかを確認すれば十分です。平方根以降の因数は必ずペアが存在するため、ここまで調べれば判定できます。これにより計算量を大幅に抑えられます。次に、nextPrime 関数の中で、引数の数値を1ずつ増やしながら isPrime で判定を行い、最初に見つかった素数を返します。コード例以下が実際のコードです。co
-
JavaScriptで指定した間隔(ギャップ)を持つ2つの素数のペアを見つける方法
問題 数値 gap を第一引数として、また2つの数値からなる範囲配列を第二引数として受け取るJavaScript関数を作成する必要があります。この関数は、指定された範囲内に存在し、かつ絶対差が gap と一致する素数のペアを見つけて返すものです。 例えば、gap = 4、範囲が [20, 200] の場合、「37」と「41」はどちらも素数であり、その差はちょうど4であるため、条件を満たすペアとなります。 解決のアプローチ この問題は以下のステップで解決できます。 素数判定: 与えられた数が素数かどうかを判定するヘルパー関数を用意します。 素数の収集: 指定された範囲内のすべての素数を配列に