• ベストアンサー

分数の計算のプログラミングです。

 2つの分数 U/SとV/tの足し算は、Sとtの最小公倍数を l とするとき、 u×l/S+u×l/t 分のlによっておこなわれるんですが、最小公倍数を ユークリッドの互除法で求め、分数の足し算を分数のまま実行するには どうプログラムすればよいのでしょうか?教えてください。 宜しくお願いいたします。   

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

まず、ユークリッドの互除法で求められるのは、最大公約数ですよね。 これは、 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が求められます。 部分部分細切れになっているので、つなげればできますよね。

goosasuke
質問者

お礼

勉強させられます。ありがとうございました。

その他の回答 (1)

  • Hk2001
  • ベストアンサー率48% (24/49)
回答No.1

ユークリッドの互除法って最大公約数を求める理論ですよね? 何回も最大公約数を求めるのは面倒なので 足し算自体は 簡単に (分子1 * 分母2) + (分子2 * 分母1)で 分子 分母1 * 分母2 で 分母 を計算して 求めた分子と分母を最大公約数を使い約分しました。 なお参考ソースは 数値チェックや0除算などのチェックを行っていません。 コマンドボタンとテキストボックスを使用しました。 参考ソース ↓↓↓↓↓↓↓↓↓↓↓↓↓ Private Sub Command1_Click() Dim la As Long Dim lb As Long Dim lm As Long Dim ln As Long Dim li As Long Dim ltxtU1 As Long '分子入力1 Dim ltxtD1 As Long '分母入力1 Dim ltxtU2 As Long '分子入力1 Dim ltxtD2 As Long '分母入力1 Dim ltxtU3 As Long '分子答え Dim ltxtD3 As Long '分母答え ltxtU1 = Text1(0).Text ltxtD1 = Text1(1).Text ltxtU2 = Text1(2).Text ltxtD2 = Text1(3).Text la = (ltxtU1 * ltxtD2) + (ltxtU2 * ltxtD1) '分子 lb = (ltxtD1 * ltxtD2) '分母 lm = la ln = lb Do Until lm Mod ln = 0 li = lm Mod ln lm = ln ln = li Loop '最大公約数 = ln ltxtU3 = la / ln ltxtD3 = lb / ln Text1(4).Text = ltxtU3 Text1(5).Text = ltxtD3 End Sub

goosasuke
質問者

お礼

これをもとに勉強したいと思います。ありがとうございました。

関連するQ&A

  • ユークリッド互除法

    29441と32934の最大公約数をユークリッド互除法で求めて答えが1とでました。さらに最小公倍数を求めろとあるのですが、ユークリッド法でどうやって最小公約数を求めるのですか?

  • 小6程度、私は大人、分数の通分の足し算で

    既約分数同士を足す場合、分母の最小公倍数で通分をして得た和が約分できる場合は少ないと思う。例として、1/3+1/6=3/6=1/2 です。この他に分母が10以下の分数の足し算での例を求めます。

  • いくつかの分数を整数にする最小の分数

    (数学ではなく算数に関する質問で恐縮です) いくつかの分数を整数にする最小の分数の公式として以下の公式があります。 【分母の最小公倍数/分子の最大公約数】 例えば8/15と12/25なら、 15と25の最小公倍数=75 8と12の最大公約数=4 8/15×75/4=10 12/25×75/4=9 ・・・と、ともに整数になります。 テクニックとして丸暗記してしまえばそれなりに使うことができますが、子供から「何でこういう公式が成り立つの?」と聞かれ、答えることができませんでした。 小額4年生にわかる様な説明をご教示いただければ幸いに存じます。

  • 最大公約数から最小公倍数

    ユークリッドの互除法についてなんですが、あるサイトでの公式?というか、 例》aとbの最大公約数を求めろ。 式がr(余り)=a-(a÷b)b それはわかったんです。 ですが、最大公約数から最小公倍数を出すという作業がわかりません。それと、手でやっているのでコンピューターは使っていません。 わかりやすく教えてください!

  • 最小公倍数の出し方

    先ほど分数の方程式 X/60+X/50=33で最小公倍数300を使用し回答されていましたが、 この最小公倍数の出し方も教えて下さい。 詳細にお願い致します。

  • 小5算数の分数教えて下さい

    娘が算数に苦戦しています。 そしてわたしとの答えに違って意味がわからないので誰か助けてください。 1、通分して大きい方の数を書きましょう。 (1)3分の2 と 6分の1    3と6の最小公倍数は6←娘の答え  3分の2=18分の12←娘の答え    答え18分の15←娘の答え 2、ジュースが4分の1L、コーラが5分の2Lあります。 (1)どちらが何L多いでしょうか?娘の答えはわかりません。 (2)全部で何Lあるのでしょうか。 20分の5+20分の8=20分の13L←娘の答え 教えて下さい

  • 一次方程式(分数)

    方程式の分数の問題で分からない問題がありましたので質問させてもらいます。 式は 2/5x-3 = 3/10x+1/2 です。xはエックスです。 このような問題には分母の最小公倍数を左辺と右辺にかけるのは知っています。 しかし、私はここで行き詰ってしまいました。 そのため、同じような式の例を見てみましたが、その後に出来た次の式がどうしてそのような数字になるのか分かりません。 具体的な例を挙げられないので、申し訳ございません。 どうか答え(解)と解説をお願いできないでしょうか。 自分は理解力が少ないのでいつも困っています。

  • 数IIの最初の方のことなんですが・・・

    分数があって、それを通分するのですが、 よく意味が分かりません。 「2つの分母を因数分解して、 最小公倍数を求めて 分母が最小公倍数になるように 分子と分母に同じ正式をかけます。」 と説明があったので、とりあえず 因数分解してみるものの、最小公倍数に なるように?が分かりません。 問題は分母が因数分解できる形になっていて 分子はxでした。

  • 分数の一次方程式の解き方

    分数を含んだ一次方程式の解き方について質問です。 全ての分母の最小公倍数を全ての項に掛けて解くというのは分かります。 練習問題を解こうとして躓いてしまったのが 分母にxがある場合です。 解き方がよく分からなかったので、 xを含まない項のみを解いたら 最終的に (1)5/x=5/4 (2)3/x+2=2/4 という形になりました。(2問です) で、ここからどう解こうと悩んでいてパッと右と左を見比べ (1)x=4 (2)x=2と答えを出せました。 単純に右の分母と左の分母が同じになればいいんだという解釈の仕方をしました。 (分子が一緒でしたので) で、答え自体はあっていた物の解説を見て 例えば分母がxと7だったら7xを掛ける 分母がx+2,3,5だったら15(x+2)を掛けると知り納得しました。 (そもそもxを最小公倍数の中に含めるという考えが思いつきませんでした) で、質問なのですが 私の解き方は、たまたま簡単な問題だったから解けただけでしょうか? (たまたま分子が同じだったので、解けただけとも思っています。分子が違っていたら、解けなかっただろうし) よく親から、あんたはなんで変な考え方するの?とか ややこしい考え方してるとか言われるのですが 逆に親から教えてもらう、一番正攻法な解き方が理解は出来ても 自分にはややこしく感じたりすることが多々あります。 なもんで、未だに独自の考え方で問題を解いてしまうところがあるので、気になり質問させて頂きました。

  • 一次合同式の解き方

    3x≡6(mod9)のxを求めよという問題でgcd(3,9)= 3より6は3の倍数であるので解を持つことは分かるのですが,xを具体的に求めることができません.参考にしたサイトは ttp://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/ExEuclid.html「ここの拡張ユークリッド互除法の応用例2」の部分です. 拡張ユークリッドの互除法を用いても 3*1+9*0=3より3*1=3 mod 9 と当然の結果しか得られず進むことができません. xをどのようにすれば求めることができますか?手計算で表を書けば出来るという話ではなく参考サイトのように数学らしい(?)の解き方でお願いします.

専門家に質問してみよう