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
-
【JavaScript】10進数を切り上げる関数を自作する方法|Math.ceil相当の実装を解説
JavaScriptでは、Mathオブジェクトに標準で用意されているMath.ceil()メソッドを使うことで、小数を簡単に切り上げることができます。本記事では、このceil相当の機能を持つ関数を自分で実装する方法を、コード例とともにわかりやすく解説します。 課題 私たちが作成するのは、JavaScriptのMathクラスに属するような関数です。 この関数は、呼び出された10進数(小数)に対して、それ以上で最も近い整数、つまり「切り上げた値」を返す必要があります。 また、渡された数値がすでに整数である場合は、その値をそのまま返す仕様とします。 解決のアプローチ この問題は、次の手順で解
-
【JavaScript】同じ数字の並び替えで作れる「ちょうど大きい数」を見つける方法
問題数値 num を唯一の引数として受け取るJavaScript関数を作成する必要があります。この関数が返すべきのは、入力された数値とまったく同じ数字だけ(すべての桁を使い切り、余分な数字を含まない)で構成され、入力値よりちょうど一つ大きい数です。そのような数が存在しない場合は -1 を返します。例const num = 5656;この場合の出力は以下のようになります。const output = 5665;出力の解説5665 は 5656 と同じ数字(5、6、5、6)だけで構成されており、5656 より大きい数の中で最小のものであるためです。アプローチ1:全探索(シンプルな方法)最も直感的な