JavaScriptで醜い数(Ugly Number)を判定する方法
醜い数(Ugly Number)とは?
10進法において、醜い数(Ugly Number)とは、素因数が 2、3、5 のみである正の整数のことを指します。
たとえば、1 から 10 までの整数はすべて醜い数です。また、12(= 2 × 2 × 3)も素因数が 2 と 3 だけなので醜い数に含まれます。一方で、14(= 2 × 7)のように、それ以外の素因数を持つ数は醜い数ではありません。
実装のポイント
今回の課題は、数値を受け取り、それが醜い数かどうかを判定する JavaScript 関数を作成することです。
判定方法はシンプルで、対象の数値を 2、3、5 の順に割り切れる限り割り続け、最終的に 1 になれば醜い数、途中で割り切れなくなれば醜い数ではないと判断できます。
コード例
const num = 274;
const isUgly = num => {
while(num !== 1){
if(num % 2 === 0){
num /= 2;
} else if(num % 3 === 0) {
num /= 3;
} else if(num % 5 === 0) {
num /= 5;
} else {
return false;
};
};
return true;
};
console.log(isUgly(num));
console.log(isUgly(60));
console.log(isUgly(140));
実行結果
コンソールには次のように出力されます。
false true false
処理の流れを解説
- 274:まず 2 で割って 137 になります。137 は 2・3・5 のいずれでも割り切れないため
falseを返します。 - 60:2 → 30 → 15、3 → 5、5 → 1 と割り続け、最終的に 1 になるため
trueを返します。 - 140:2 → 70 → 35、5 → 7 となりますが、7 は 2・3・5 のどれでも割り切れないため
falseを返します。
-
【JavaScript】数値をアルファベットに変換する方法を解説
本記事では、1から26までの整数を受け取り、それに対応する英大文字のアルファベットを返す関数をJavaScriptで実装する方法を解説します。範囲外の数値が渡された場合は -1 を返す仕様とします。たとえば、次のような動作を目指します。toAlpha(3) = C toAlpha(18) = RASCIIコードとはASCIIコードとは、キーボード上に存在する文字や記号、数字などを数値として表現するための標準的な規格です。コンピュータ内部では、すべての文字がこのような数値(文字コード)として扱われています。英大文字のA〜ZもASCIIコード上で対応する数値が割り当てられており、Aは65、Bは66
-
JavaScriptで入力値が数字か文字かを判定する方法【isNaN()関数の使い方】
入力された値が数字か文字(数値以外)かを判定するには、JavaScriptのisNaN()関数を使用します。この関数は、値がNaN(Not a Number:非数)である場合にtrueを返します。この特性を利用することで、ユーザーが入力した値が数値かどうかを簡単にチェックできます。 isNaN()関数とは isNaN()は「is Not a Number」の略称です。引数として渡された値が数値として解釈できない場合にtrueを、数値として解釈できる場合はfalseを返します。これにより、「入力内容が数字かどうか」をシンプルに判定できるのが特徴です。 サンプルコード 以下のコードでは、フォームの