JScript+WSHでプログラミング基礎100本ノック その38 実践3 素因数分解

課題

840を素因数分解し、下記のような素因数を出力してください。

2
2
2
3
5
7
続行するには何かキーを押してください . . .

ヒント

割る数を徐々に大きくし素因数か調べていく。
素因数だった場合は、割られる数を素因数で割って小さくする。

コード例

main.js
--------

var num = 840;	// 調べる数
var dev = 2;	// 割る数

while(true){

	// 調べる数が割る数で割り切れたら、割る数は素因数となる
	// 素因数が見つかった場合、次の調べる数は調べす数÷割る数した数となる
	if(num % dev == 0){
		WScript.echo(dev);
		num = num / dev;
		continue;
	}else{
		dev++;	// 割り切れなかったら1を足す
	}

  // 割られる数が1となったり、割る数が割られる数より大きくなったら終了
	if(num == 1){
		break;
	}else if(dev > num){
		WScript.echo(num);
		break;
	}
}

出力結果

2
2
2
3
5
7
続行するには何かキーを押してください . . .

解説

実際作ってみると案外難しいと思います。
また、この記事の公開日を数字とした20241028だと下記のようになります。

2
2
5060257
続行するには何かキーを押してください . . .

素因数分解の高速化アルゴリズムもありますが、ここでは扱いません。

この記事が気に入ったらサポートをしてみませんか?