• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:”部分分数分解(m/nのm,nは整数)のアルゴリズム化の方針を示せ。”)

部分分数分解のアルゴリズム化の方針

このQ&Aのポイント
  • 部分分数分解(m/nのm,nは整数)のアルゴリズム化の方針を示します。
  • 部分分数分解において、mx/nxの式を変形してm/nという形にすることが目標です。
  • 具体的なアルゴリズムは、mx/nx = (mx-n)/nx + 1/xという式を利用し、再帰的に求める方法です。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

>ループに入る前に入力された数値のチェックを入れればOKでしょうか? ループに入る前だけではなく、ループの中でもチェックする必要があります。 例えば、5/6の場合、 5/6 = (5*2-6)/6*2 + 1/2 = 4/12 + 1/2 4/12 = (4*4-12)/12*4 + 1/4 = 4/48 + 1/4 4/48 = (4*13-48)/48*13 + 1/13 = 4/624 + 1/13 これ以上やっても無限ループになります。 m/n = mx/nx = (mx-n)/nx + 1/x としたあとで、(mx-n)/nxを約分して既約分数にする必要があります。 ただし、上記のチェックだけで本当に無限ループにならないかどうかの数学的な証明は必要です。

izayoi168
質問者

お礼

>>既約分数にする必要 頭から抜けていました、実際にコーディングしてテストした方がいいですね。 取りあえず、ループの継続条件をMOD(n,m)<>0にして、 余りなく分子で分母を割り切れた時に終了させる方向で考えます。 ありがとう御座いました!

その他の回答 (1)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

方針としては大丈夫でしょうが、 無限ループになる可能性はありませんか?

izayoi168
質問者

補足

先ずは、書き込み、有難うございます。 ”有理関数は必ず部分分数分解できる”っていう文章をどこかで見たので、 必ずいつかは最新の分子が1になると思ったのですが… よく考えると、最初のmとnの入力の際に 変な数値を入力されれば無限ループですね…orz ループに入る前に入力された数値のチェックを入れればOKでしょうか?

関連するQ&A