JavaScriptで数値のn乗根を計算する方法
n乗根の計算方法
JavaScriptで数値のn乗根(累乗根)を求めるには、Math.pow()メソッドを使用します。「xのn乗根」は数学的には「xの1/n乗」に等しいため、Math.pow(x, 1 / n)という形で計算できます。
また、負の数や符号の処理が必要なケースでは、Math.abs()メソッドと組み合わせることで柔軟に対応できます。次のサンプルコードでは、任意の数値に対して平方根や負の指数の計算を行う関数を定義しています。
サンプルコード
<html>
<head>
<title>Calculate root</title>
</head>
<body>
<script>
function displayRoot(x, num) {
val = num % 2;
if ((val == 1) || x < 0)
x = -x;
var a, num;
a = Math.pow(x, 1 / num);
num = Math.pow(a, num);
if (Math.abs(x - num) < 1 && (x > 0 === num > 0))
return val ? -a : a;
}
document.write(displayRoot(36, 2));
document.write("<br>" + displayRoot(49, 2));
document.write("<br>" + displayRoot(36, -2));
document.write("<br>" + displayRoot(216, -2));
</script>
</body>
</html>
コードのポイント
- Math.pow(x, 1 / num):xのnum乗根を計算します。たとえば
Math.pow(36, 1 / 2)は36の平方根である「6」を返します。 - num % 2:指数が奇数かどうかを判定し、必要に応じて結果の符号を調整します。
- 検証処理:得られた値を再度num乗して元の値と比較し、誤差が十分に小さいことを確認したうえで結果を返しています。
実行結果
6
7
0.16666666666666666
0.06804138174397717
最初の2行は36と49の平方根、残りの2行は負の指数(−2)を指定した場合の出力です。Math.pow(x, -1 / 2) は「平方根の逆数」、すなわち 1/√x を意味します。
補足:立方根にはMath.cbrt()も利用可能
3乗根だけであれば、ES2015以降で利用できるMath.cbrt()メソッドを使うと、負の数もそのまま計算できるため、よりシンプルに記述できます。
console.log(Math.cbrt(27)); // 3
console.log(Math.cbrt(-8)); // -2
-
【JavaScript】整数の中からn番目の回文数を見つける方法
問題 数値 n を引数として受け取り、0から数えて n 番目にあたる回文数(回文となる整数)を返す JavaScript 関数を作成します。 たとえば、1番目の回文数は「0」、2番目は「1」、10番目は「9」です。「10」は逆から読むと「01」となり回文ではないため、11番目の回文数は「11」となります。 回文数とは 回文数とは、桁を逆から並べ替えても元の数と同じになる整数のことです。「7」「121」「1331」などがその例です。 解決策:コード例 以下が実際のコードです。 const num = 31; const findNthPalindrome = (num = 1) => {
-
【JavaScript】数値を逆順にした値が素数かどうかを判定する方法
問題 今回は、数値を引数として受け取り、その数値を逆順(数字をひっくり返した値)にした結果が素数であれば true を、そうでなければ false を返す JavaScript 関数を作成します。 ちなみに、このように「逆順にすると別の素数になる数」は「エマープ(emirp:prime を逆から読んだ語)」と呼ばれることがあります。 サンプルコード 以下のコードでは、まず数値を文字列に変換して逆順に並べ替え、その後で素数判定を行っています。 const num = 13; // 数値を逆順にした値を返す関数 const findReverse = (num) => { re