JavaScript の gcmlcm Class

【実行画面】

【Source Code】
<script type="text/javascript">
function gcmlcm(n, m)
{   this.n = n;     //値1
    this.m = m;     //値2
    this.nm = n * m;
    this.gcm = function()
    {   while(this.n!=this.m)
        {   if (this.n>this.m)	this.n -= this.m;
            else	this.m -= this.n;
        }
        return this.n;
    }
    this.lcm = function()
    {   w = this.gcm();
        return this.nm / w;
    }
}
</script>
</head>

<body>
<h2>JavaScript の Class</h2>

<script type="text/javascript">
  var cls = new gcmlcm(32, 24);
  ans = cls.gcm();
  document.write("GCM(32,24): ", ans, " <br>");
  ans = cls.lcm();
  document.write("LCM(32,24): ", ans, " <br>");
</script>

JavaScript では Object と Class は別物で、今度は Class(gcmlcm) の説明です。
var cls = new gcmlcm(32, 24); で gcmlcm Class を生成します。
このとき Constructor で二個の整数 n,m を受け取ります。
this は現在(gcmlcm が呼ばれたとき)のインスタンスです。
nm に n と m の積を保存します。
this.n, this.m, this.nm は gcmlcm クラスの内部変数です。
<script type="text/javascript">
function gcmlcm(n, m)
{   this.n = n;     //値1
    this.m = m;     //値2
    this.nm = n * m;

最大公約数(GCM)を求める関数です。
this.gcm で宣言されているので、gcmlcm クラスの内部関数です。
    this.gcm = function()
    {   while(this.n!=this.m)
        {   if (this.n>this.m)	this.n -= this.m;
            else	this.m -= this.n;
        }
        return this.n;
    }

最小公倍数(LCM)を求める関数です。
LCM は分数の加減算を行うときの分母になる値です。
this.lcm で宣言されているので、gcmlcm クラスの内部関数です。
Class の関数(lcm)の中から、Class の関数(gcm) を呼び出しています。
    this.lcm = function()
    {   w = this.gcm();
        return this.nm / w;
    }
}
</script>

gcmlcm Class の使い方です。
var cls = new gcmlcm(32, 24); で Class を生成します。
cls.gcm(); で Class の gcm() 関数を呼び出して ans に GCM を求めます。
cls.lcm(); で ans に LCM を求めます。
LCM を計算するとき、lcm() 関数からもう一度 gcm() 関数が呼び出されます。
<script type="text/javascript">
  var cls = new gcmlcm(32, 24);
  ans = cls.gcm();
  document.write("GCM(32,24): ", ans, " <br>");
  ans = cls.lcm();
  document.write("LCM(32,24): ", ans, " <br>");
</script>
最大公約数(GCM)とは、二個の整数を割り切ることのできる最大の数です。
GCM はユークリッドの互除法を使った次の手順で計算できます。
  1. data1 と data2 が等しいとき data1 が最大公約数です。
  2. data1 が data2 より大きいとき data1-=data2 を計算して 1. に戻ります。
  3. data2 が data1 より大きいとき data2-=data1 を計算して 1. に戻ります。

最小公倍数(LCM)とは分数の加減算を行うときの分母になる値です。
GCM が求まれば LCM は次の式で計算できます。
LCM = (data1 * data2) / GCM

前田稔の超初心者のプログラム入門
超初心者のプログラム入門(JavaScript)