唐突に「素因数分解」がしたいと思ったのでプログラムで作ってみようと思います。
少しググってみると何やらいろんな関数が使われていて難しそうでした。
ですが今回はif文とfor文だけで素因数分解をしていこうと思います。(良いか悪いかは別として)
早速コード
今回のコードは以下のような感じです。
javascriptしか示してないので実際に使うときはHTMLに読み込むなどしなければいけません。
var num = 1000; //素因数分解する元の数
for (var i = 2; i < i + 1; i++) {
if (num % i == 0) {
for (var n = 1; n < n + 1; n++) {
if (num % i == 0) {
console.log(i);
var num = num / i;
} else {
break;
}
}
}
if (num == 1) {
break;
}
}
プログラムの簡単な説明
大まかな仕組み
まずfor文で2からの無限ループを作ります。
それでif文で最初に定義した数字をiで割り切れる(割り算のあまりが0)ならiで割り切れなくなるまで何度も割り続けます。
そして割り切れなくなったらiが次の値に変更し、同じ動作を繰り返します。
無限リープは割っていった数字が1になるまで繰り返します。
素因数分解の特徴
素数や素因数分解についてちょっとだけ詳しい?知識が必要です
素数は無限
素数は無限にあります。(証明とかは調べてください)
なのでfor文を回すときに有限であってはいけません。
for文に限りがあれば完全に素因数分解できない可能性があります。
なので無限ループにしましょう。
ですが重要なことはbreakをつけて条件に当てはまると無限ループは終わる形にすることです。
1は素数ではない
1は素数ではないし、1で対象の数字を割ると、ずっと割り続けてしまいます。
なのでfor文は2から始めています。