プログラミング フロントエンド

【Javascript】全ての約数を取得するロジック

こんにちは!

今回は「Javascriptで全ての約数を取得するロジック」についてお伝えしたいと思います。

約数は日常生活の中でもホールケーキのカットやタイムスケジュールなど様々な場面で使われていますよね。

Javascriptで全ての約数を取得するロジック

最短のアルゴリズムで自然数Nの約数を算出するポイントは

1からNまで全てを割って確認する必要はなく、1から√Nまで確認すればよいという点です。

例えばN=8の約数を算出する場合、
8 ÷ 1 = 8 あまり0
8 ÷ 2 = 4 あまり0
√8は3より小さいので、1〜2までの割り算をします。

上記式を変形すると、
8 = 8 × 1
8 = 4 × 2
となり、商である8と4も約数であると言えます。

8の約数: 1, 2, 4, 8

 

実際の約数算出のアルゴリズムを以下に示します。

// 全ての約数を取得する
const getDivisors = (num) => {
  const result = [];
  for (let i=1; i*i<=num; i++) {
    console.log(i, num / i);
    if (num % i !== 0) continue;
    result.push(i);
    if (i !== num / i) {
      result.push(num / i);
    }
  }
  return result;
};
console.log('getDivisors(1): ', getDivisors(1)); // getDivisors(1): [1]
console.log('getDivisors(7): ', getDivisors(7)); // getDivisors(7): [1, 7]
console.log('getDivisors(8): ', getDivisors(8)); // getDivisors(8): [1, 8, 2, 4]

 

これで最小の計算量で全ての約数を算出することができました。
約数の順序は必要に応じて昇順にソートしてあげてください。

以上、お疲れさまでした〜🍵

-プログラミング, フロントエンド
-

© 2024 エンジニア×ライフハック Powered by AFFINGER5