JavaScriptで数値のn乗根を計算する方法【サンプルコード付き】
はじめに
本記事では、任意の数値のn乗根(ルート)を計算して結果を返すJavaScript関数の実装方法を解説します。Math.pow()メソッドを活用しながら、負の数や偶数乗根への対応も含めた、堅牢な関数を作成していきます。
実装コード
以下が、n乗根を計算する関数のサンプルコードです。
const findNthRoot = (m, n) => {
try {
// nが奇数かつmが負の場合は符号を反転して処理
let negate = n % 2 == 1 && m < 0;
if(negate)
m = -m;
// mの1/n乗(= n乗根)を計算
let possible = Math.pow(m, 1 / n);
// 結果の検証:possibleのn乗がmと一致するか確認
n = Math.pow(possible, n);
if(Math.abs(m - n) < 1 && (m > 0 == n > 0))
return negate ? -possible : possible;
} catch(e){
return null;
}
};
console.log(findNthRoot(45, 6));出力結果
コンソールには以下のように出力されます。
1.8859727740585395
これは「45の6乗根」の計算結果です。実際に 1.8859727740585395 を6回掛け合わせると、約45になることが確認できます。
コードのポイント解説
1. 負の数と奇数乗根への対応
n % 2 == 1 && m < 0 の条件により、「nが奇数」かつ「mが負の値」の場合にフラグを立てます。例えば -27 の3乗根は -3 ですが、Math.pow(-27, 1/3) を直接計算するとNaNになってしまうため、一旦正の数に変換して計算し、最後に符号を付け直しています。
2. 結果の検証処理
浮動小数点演算の誤差を考慮し、求めた値のn乗が元の値mとほぼ一致するか(絶対値の差が1未満)をチェックしています。これにより、信頼性の高い結果のみを返すようにしています。
3. エラーハンドリング
try-catchブロックで処理を囲んでおり、予期しないエラーが発生した場合にはnullを返す安全な設計になっています。
まとめ
この記事では、Math.pow()を使ったn乗根の計算方法を紹介しました。単純にMath.pow(m, 1/n)とするだけでは負の数に対応できないため、奇数乗根の場合の符号処理や、結果の検証といった工夫を加えることで、より実用的な関数になります。平方根以外にも立方根や高次の乗根が必要な場面でぜひ活用してください。
-
【JavaScript】数値を逆順にした値が素数かどうかを判定する方法
問題 今回は、数値を引数として受け取り、その数値を逆順(数字をひっくり返した値)にした結果が素数であれば true を、そうでなければ false を返す JavaScript 関数を作成します。 ちなみに、このように「逆順にすると別の素数になる数」は「エマープ(emirp:prime を逆から読んだ語)」と呼ばれることがあります。 サンプルコード 以下のコードでは、まず数値を文字列に変換して逆順に並べ替え、その後で素数判定を行っています。 const num = 13; // 数値を逆順にした値を返す関数 const findReverse = (num) => { re
-
JavaScriptで平方根を整数または範囲として取得する方法
課題 JavaScriptで関数を作成し、整数 n を引数として受け取り、次のいずれかを返す必要があります。 n が平方数(完全平方数)である場合:k * k == n を満たす整数 k をそのまま返す n が平方数でない場合:k * k < n < (k+1) * (k+1) を満たす連続する整数の範囲 (k, k+1) を返す コード例 以下がその実装です。 const num = 83; const squareRootRange = (num = 1) => { const exact = Math.sqrt(num