JavaScriptで数値の素因数を配列として取得する方法
本記事では、数値を受け取り、その数値を割り切るすべての素数(素因数)を配列として返すJavaScript関数の作成方法を解説します。
例えば、入力された数値が105の場合、出力は次のようになります。
const output = [3, 5, 7];
コード例
実際のコードは以下のとおりです。
const num = 105;
const isPrime = (n) => {
for(let i = 2; i <= n/2; i++){
if(n % i === 0){
return false;
}
};
return true;
};
const findPrimeFactors = num => {
const res = num % 2 === 0 ? [2] : [];
let start = 3;
while(start <= num){
if(num % start === 0){
if(isPrime(start)){
res.push(start);
};
};
start++;
};
return res;
};
console.log(findPrimeFactors(num));
実行結果
コンソールには以下のように出力されます。
[3, 5, 7]
コードの解説
isPrime関数
引数として受け取った数値が素数かどうかを判定するヘルパー関数です。2からn/2までの整数で順番に割り算を行い、1つでも余りが0になる値が存在すればfalse(素数ではない)を返し、最後まで割り切れなければtrue(素数)を返します。
findPrimeFactors関数
まず、対象の数値が偶数であれば素因数の1つとして2を結果配列に格納します。続いて、3から順に数値自身までループしながら、「割り切れる」かつ「素数である」という条件を満たす値だけを結果配列に追加していきます。最終的に、入力数値を完全に割り切る素因数のみが格納された配列が返されます。
なお、この実装では単純な全探索を行っているため、非常に大きな数値を扱う場合は処理時間が長くなる点に注意してください。必要に応じて、平方根までの範囲で素数判定を行うなど、パフォーマンスの最適化を検討するとよいでしょう。
-
JavaScriptの配列reverse()メソッドとは?使い方とサンプルコードを解説
JavaScriptのreverse()メソッドは、配列の要素を逆順に並べ替えるために使用されるメソッドです。呼び出すと元の配列そのものが反転され、その結果の配列が戻り値として返されます。構文array.reverse()reverse()メソッドのポイント引数は不要で、呼び出した配列自体を直接書き換えます(破壊的なメソッド)。戻り値は、要素が反転された配列への参照です。元の配列を変更せずに反転したい場合は、ES2023で追加されたtoReversed()メソッドを使うと便利です。それでは、実際にJavaScriptでreverse()メソッドを実装してみましょう。例1:基本的な使い方<
-
JavaScriptのarray.keys()メソッドの使い方と実行例をわかりやすく解説
JavaScriptのarray.keys()メソッドとは JavaScriptのarray.keys()メソッドは、配列のキー(インデックス番号)を格納したArray Iteratorオブジェクトを返すメソッドです。戻り値はイテレータであるため、for...of文などを使って順番に値を取り出して利用します。 構文 array.keys() 引数は不要で、呼び出された配列の各要素のインデックス(0から始まる番号)を持つイテレータが返されます。 サンプル1:車種リストのキーを表示する 次の例では、「Crossover」「Convertible」「Hatchback」「SUV」という4つの車種