• 締切済み

分数の加算

1    1    5 ― + ― = ― 2    3    6 という式をJavaScriptで任意の数についてするにはどう書けばよいのでしょうか。

みんなの回答

  • Werner
  • ベストアンサー率53% (395/735)
回答No.1

1. 足す数同士を通分 (分母が通分前の最小公倍数になるようにしても良いし、 後で約分するので単に互いの分母同士をかけたのでも良い。) 2. 分子同士を足し算 3. 既約分数になるように約分 約分は分母と分子をその最小公約数で割ればよいです。 面白そうだったのでコードも書いてみました。 (自分で作りたければ無視してください。) ------------------------------------------------------- //分数オブジェクト //n:numerator(分子), d:denominator(分母) var a={"n":1 , "d":2}; var b={"n":1 , "d":3}; var result = add_frac(a,b); alert(frac2str(a)+"+"+frac2str(b)+"="+frac2str(result)); function add_frac(a,b){   var r={"n":0 , "d":0}   //通分後の分母   r.d = lcm(a.d,b.d);   //通分後の分子同士の加算   r.n = a.n*r.d/a.d + b.n*r.d/b.d   //約分   var temp = gcd(r.d,r.n);   r.d /= temp;   r.n /= temp;   return r; } function frac2str(a){   return a.n+"/"+a.d; } //mとnの最大公約数を返す(ユークリッドの互除法) function gcd(m,n){   var temp;   if(m<n){     temp=m;     m=n;     n=temp;   }   if(n<=0){return m;}   while(1){     temp = m%n;     if(temp==0){return n;}     m=n;     n=temp;   } } //mとnの最小公倍数を返す function lcm(m,n){   return m*n/gcd(m,n); }

関連するQ&A

専門家に質問してみよう