JavaScript:1から指定した数までの素数を求めるサイト

JavaScript

1から指定した数までの素数を求めるサイトを作りました。
単純なJavaScriptプログラムなので、10万以上は非常に時間が掛かります。

ソースコード

sosu.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<meta name="robots" content="INDEX,FOLLOW">
		<meta name="description" content="1から指定した数までの素数を求めるサイトです。単純なJavaScriptプログラムなので、10万以上は非常に時間が掛かります。">
		<!-- 
			素数の計算方法に関しては、以下のサイトを参考に作成させて頂きました。
			
			【素数をを求めるプログラム】
				http://www.tsg.ne.jp/TT/tsg/c/mansaku/P01.html
				
			本プログラムでは実装していませんが、計算の高速化方法も上記サイトには記述がありますよ。

		 -->
		<title>1から指定した数までの素数を求めて表示するサイト</title>
		
		<style>
			*{
				margin: 0;
				padding: 0;
			}
			body{
				margin: 1em;
				font-family: serif;
				font-size: 16pt;
			}
			div#contents{
				width: 100%;
			}
			div#contents p{
				margin-top: 1em;
			}
		</style>

		<script>
			let btnSosu, sosu;	// ボタン、素数表示用

			/*
			 * 起動時の処理
			 */
			window.addEventListener("load", function(){
				// DOM取得
				btnSosu = document.getElementById("btnSosu");
				sosu = document.getElementById("sosu");

				// 「素数を求める」ボタンを押したときの処理
				btnSosu.addEventListener("click", function(){
					// テキストボックスの入力値を取得
					let kazu = document.getElementById("kazu").value;

					let sosuResult = "";	// 求めた素数を追加する文字列
					// 入力チェック
					if(kazu === ""){		// 入力なし
						sosu.innerHTML = "";
						return;
					}
					else{				// 入力あり
						kazu = Number(kazu);
						if(kazu <= 1 || isNaN(kazu)){		// 1以下 または 数値でない場合は終了
							sosu.innerHTML = "";
							return;
						}
						
						// 素数を求める
						sosuResult = "<strong>" + kazu + "</strong>までの素数<br>";

						// 1~入力した値までループ
						for(let i=1; i<=kazu; i++){
							let yakusuu = 0;		// 約数
							for(let j=1; j<=i; j++){	// 割る数を1ずつ自身の数まで増やす
								if(i % j == 0){		// 割り切れたら
									yakusuu++;		// 約数の数をカウント
								}
							}
							if(yakusuu == 2){		// 約数が1とそれ自身のみ
								sosuResult += i + " ";	// 素数である
							}
						}
					}
					// 素数を表示
					sosu.innerHTML = sosuResult;
				});
			});

		</script>
	</head>

	<body>
		<div id="contents">
			<h1>素数を求める</h1>
			<input type="text" size="10" id="kazu"><button id="btnSosu">素数を求める</button>
			<p id="sosu"></p>
		</div>
	</body>

</html>

参考にしたサイト

素数の計算方法についてすごく分かりやすく書かれています。

素数を求めるプログラム

コメント

タイトルとURLをコピーしました