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

JavaScript

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

ソースコード

sosu.html

1<!DOCTYPE html>
2<html>
3    <head>
4        <meta charset="UTF-8">
5        <meta name="viewport" content="width=device-width, initial-scale=1.0">
6        <meta name="robots" content="INDEX,FOLLOW">
7        <meta name="description" content="1から指定した数までの素数を求めるサイトです。単純なJavaScriptプログラムなので、10万以上は非常に時間が掛かります。">
8        <!--
9            素数の計算方法に関しては、以下のサイトを参考に作成させて頂きました。
10             
11            【素数をを求めるプログラム】
12                http://www.tsg.ne.jp/TT/tsg/c/mansaku/P01.html
13                 
14            本プログラムでは実装していませんが、計算の高速化方法も上記サイトには記述がありますよ。
15 
16         -->
17        <title>1から指定した数までの素数を求めて表示するサイト</title>
18         
19        <style>
20            *{
21                margin: 0;
22                padding: 0;
23            }
24            body{
25                margin: 1em;
26                font-family: serif;
27                font-size: 16pt;
28            }
29            div#contents{
30                width: 100%;
31            }
32            div#contents p{
33                margin-top: 1em;
34            }
35        </style>
36 
37        <script>
38            let btnSosu, sosu;  // ボタン、素数表示用
39 
40            /*
41             * 起動時の処理
42             */
43            window.addEventListener("load", function(){
44                // DOM取得
45                btnSosu = document.getElementById("btnSosu");
46                sosu = document.getElementById("sosu");
47 
48                // 「素数を求める」ボタンを押したときの処理
49                btnSosu.addEventListener("click", function(){
50                    // テキストボックスの入力値を取得
51                    let kazu = document.getElementById("kazu").value;
52 
53                    let sosuResult = "";    // 求めた素数を追加する文字列
54                    // 入力チェック
55                    if(kazu === ""){        // 入力なし
56                        sosu.innerHTML = "";
57                        return;
58                    }
59                    else{               // 入力あり
60                        kazu = Number(kazu);
61                        if(kazu <= 1 || isNaN(kazu)){        // 1以下 または 数値でない場合は終了
62                            sosu.innerHTML = "";
63                            return;
64                        }
65                         
66                        // 素数を求める
67                        sosuResult = "<strong>" + kazu + "</strong>までの素数<br>";
68 
69                        // 1~入力した値までループ
70                        for(let i=1; i<=kazu; i++){
71                            let yakusuu = 0;        // 約数
72                            for(let j=1; j<=i; j++){ // 割る数を1ずつ自身の数まで増やす
73                                if(i % j == 0){     // 割り切れたら
74                                    yakusuu++;      // 約数の数をカウント
75                                }
76                            }
77                            if(yakusuu == 2){       // 約数が1とそれ自身のみ
78                                sosuResult += i + " ";  // 素数である
79                            }
80                        }
81                    }
82                    // 素数を表示
83                    sosu.innerHTML = sosuResult;
84                });
85            });
86 
87        </script>
88    </head>
89 
90    <body>
91        <div id="contents">
92            <h1>素数を求める</h1>
93            <input type="text" size="10" id="kazu"><button id="btnSosu">素数を求める</button>
94            <p id="sosu"></p>
95        </div>
96    </body>
97 
98</html>

参考にしたサイト

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

素数を求めるプログラム

コメント

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