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>
参考にしたサイト
素数の計算方法についてすごく分かりやすく書かれています。
素数を求めるプログラム
コメント