普段管理人が通う学校の教師の提案で、「ピタゴラス数」を求めるプログラムを作ってみました。
ピタゴラス数って何?って方はWikipedia - ピタゴラス数をご覧ください。
ここでのmとnは、ピタゴラス数の面積を求めるのに使用する自然数(m > n)とします。
では、さっそく実物を。
mまたはnの最大値
処理結果
mの値 | nの値 | 斜辺(m2 + n2) | 他の一辺(m2 - n2) | 他の一辺(2mn) | (参考) 面積 | (参考) mとnのG.C.D |
参考程度にソースコードをはっておきます。
<!-- <script>~</script>間はコメントアウトを省略 しています。 --> <script type="text/javascript"> function tagainiso(){ // 剰余 var r; var tagainiso_n = n; var tagainiso_m = m; gcd = 1; while ((r = tagainiso_m % tagainiso_n) != 0) { tagainiso_m = tagainiso_n; tagainiso_n = r; } gcd = tagainiso_n; if(gcd != 1) { n = n / gcd; m = m / gcd; } } function pitagras(){ // 乱数その1 m = Math.floor(Math.random()*document.getElementById("max").value + 1); //その2 n = Math.floor(Math.random()*document.getElementById("max").value + 1); if(m < n) { // m >= nにする var taihi = m; //一時退避 m = n; n = taihi; } tagainiso(); //テーブル取得 var table = document.getElementById("area"); //行追加 var tr = table.insertRow(-1); //セル挿入 tr.insertCell(-1).innerHTML = m; tr.insertCell(-1).innerHTML = n; tr.insertCell(-1).innerHTML = m * m + n * n; tr.insertCell(-1).innerHTML = m * m - n * n; tr.insertCell(-1).innerHTML = 2 * m * n; tr.insertCell(-1).innerHTML = ( (m * m - n * n) * 2 * m * n ) / 2; } </script> <p><b>m</b>または<b>n</b>の最大値 <input type="number" size="5" id="max" value="50"></p> <p><button onclick="pitagras()">実行</button></p> <p>処理結果<br> <table id="area" border="1"> <tr> <td>mの値</td> <td>nの値</td> <td>斜辺(m<sup>2</sup> + n<sup>2</sup>)</td> <td>他の一辺(m<sup>2</sup> - n<sup>2</sup>)</td> <td>他の一辺(2mn)</td> <td>(参考) 面積</td> </tr> </table> </p>
作り方を知りたい方は、コメントいただければ解説します。