調査範囲:2~
[to under]

JavaScriptを使って素数を調べるスクリプトです。範囲に指定した数値を上限に素数を調べる計算を実行します。
範囲が広くなると計算に時間が掛かるためブラウザが中止するか確認してくることがあります。

途中経過:チェックを入れると途中経過を表示しますが、画面の表示が追いつかないため、一時停止したときに表示が行われます。
改行表示:チェックが入っていると素数の結果を改行して表示します。チェックを外すと改行せずに表示します。


//1つ目の素数として2を配列変数へ
prime = [2];	
for (n=3; n<=smax; n++) {
	//素数の判定初期設定
	bool = true;
	//既に判っている素数の最大数
	pmax = prime.length;
	//既に判っている素数で割る
	for (m=0; m<pmax; m++) {
		//割り切れると素数ではない
		if ((n % prime[m]) == 0) {
			bool = false;
			break;
		}
		//調査範囲の上限を下げる
		//prime[m] * (n / prime[m]) = n なので
		//prime[m]で割れないということは、(n / prime[m])でも割れない。
		//また、prime[m]以下の素数に対して(n / prime[m])より大きな素数を掛けてもnより大きくなるため計算から除外できる。
		if (prime[m] >= (n / prime[m])) {break;}
	}
	//素数を発見
	if (bool) {
		//発見した素数を配列変数に追加
		prime[pmax] = n;
	}
}

[to top]