質問: 分数の計算のプログラミングです。 2つの分数 u/sとv/tの足し算は、sとtの最小公倍数を l とするとき、 u×l/s+u×l/t 分のlによっておこなわれるんですが、最小公倍数を ユークリッドの互除法で求め、分数の足し算を分数のまま実行するには どうプログラムすればよいのでしょうか?教えてください。 宜しくお願いいたします。
回答: まず、ユークリッドの互除法で求められるのは、最大公約数ですよね。 これは、 int euclid(int s, int t){ int x,y,z; x=s;y=t; for(;;){ z=x%y; if(z==0){break;} x=y;y=z; } return y; } で、求まります。 最小公倍数は、 s*t/euclid( s, t); で求まります。 あとは、 l=s*t/euclid( s, t); ((u*l/s)+(v*l/t))/l; これで、u/s+v/tが求められます。 部分部分細切れになっているので、つなげればできますよね。