普段管理人が通う学校の教師の提案で、「ピタゴラス数」を求めるプログラムを作ってみました。
ピタゴラス数って何?って方は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>
作り方を知りたい方は、コメントいただければ解説します。
0 件のコメント:
コメントを投稿
質問や意見などどしどしお寄せください!!