LoginSignup
1
0

More than 1 year has passed since last update.

はじめに

こんにちは、ITを勉強している学生です。
皆さんは素因数分解お好きでしょうか
私は高校生の頃QuizKnockさんが作った「wallprime」というアプリにハマっていた時期がありました。
(楽しいのでぜひやってみてください)
今回は素因数分解について語っていきたいと思います。
(写真)

素因数分解とは

数を素数の掛け算で表すことです。
(例)12=2×2×3 64=2×2×2×2×2×2

素因数分解のやり方

実際に素因数分解をするときは、小さな素数から順に割り算をしていくことで導くことができます。
そのほかにも倍数の判定法を使うことで簡単な素数で構成されている数であれば求めることができます。

ソースコード

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">

</head>
<body>
    <h1>素因数分解</h1>
    <h2>好きな数を入力してください</h2>
    <input id="prime" type="number">
    <p>結果:<span id="result"></span></p>

    <script>
const box = document.querySelector('#prime');
const result = document.querySelector('#result');

const checkDivisors = () => {
  let value = box.value;
	let exponent = 0;
	let divisors = [];

	for(let number = 2; number <= value; number++) {
		if(value % number === 0) {
			exponent = 0;
      while(value % number === 0) {
      	exponent++;
      	value /= number;
      }
			divisors.push({number, exponent});
		}
	}
  
  box.value = null;
  result.textContent = null;

  divisors.forEach((divisor, index) => {
    if(index === divisors.length - 1) {
    	result.textContent += `${divisor.number}^${divisor.exponent}`;
      return;
    }
    result.textContent += `${divisor.number}^${divisor.exponent}\n*\n`;
  })
}

box.addEventListener('keydown', e => {
	if(e.key === 'Enter') {
		checkDivisors();
  }
})
    </script>
</body>
</html>

つくってみて

google先生で調べながら作ってみましたが、結構素因数分解のソースコードが複雑で大変でした。
素因数分解にはまだ語りきれていない魅力がたくさんあるので、これを機に皆さんも素因数分解始めてみてはいかがでしょうか!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0