こんにちは! 日曜数学者のtsujimotterです!
今日は 分数の足し算 について考えたいと思います。
きっかけは学生のプログラミング課題でした。
tsujimotterは大学でPythonとC言語を教えているのですが、ある日の課題で「分数の足し算を計算する関数を作れ」というものがありました。時間差はありましたが、PythonとC言語の両方で似たような課題が出たのです。
実際、分数の足し算を一般に計算してみると
なので、あとは結果として得られた分数を約分してあげればよいわけです。
無事、関数を作ることはできたのですが、問題なのはその関数のテストです。関数がうまく動作することをテストするためには、分数の結果が約分されるような例を作らなければなりません。
ところがです。適当なテストケースを考えたのですが、どのケースもなぜか約分されない。。。tsujimotterはこの手の計算が大の苦手で、約分が発生するケースを作ることができませんでした。
頭が働いていないので、約分が必要な分数の足し算の例が思いつきません。何かいい例ないですか?
— tsujimotter (@tsujimotter) 2020年6月1日
良い方法がないかと考えているうちに、「約分が発生する必要十分条件を数学的に与えればよい」ということに気づきました。
そこで、今日は 分数の足し算の計算において約分が発生する条件 について考えてみたいと思います。
今回の知識は、小学校の先生の作問にも役に立つかもしれません。
「約分が発生する」必要十分条件?
それでは問題のセッティングを考えましょう。
今回はの目的は
の計算です。ここで、 は既約分数としておいても一般性は失いません。すなわち
ということです。
ここで、式 で「約分が発生する」ということを、
として定義しましょう。すなわち
ということですね。
早速結論ですが、整数論的な議論によって、以下の命題を示すことができました:
このとき,次が成り立つ:
左の条件は で約分が発生することを意味しており、右の条件は分母同士が1より大きい公倍数を持つということを意味しています。つまり、分母同士が1より大きい公倍数を持つならば約分は発生する というわけですね。しかも、約分が発生するのはそのときに限る ということです。
実際、具体例で確認してみましょう。
元々の分数の分母は であり、公約数 を持っています。よって、約分が発生するというわけですね。実際、計算途中で分母分子のキャンセルが発生しています。
それでは、命題1を証明しましょう。
を の 1 より大きな約数とする。
このとき定義より、 かつ であるから
が言える。すなわち、 である。特に
が言える。
を を割り切る素数とする。
定義より、① かつ ② である。
②から は素数より、 または であるので、それぞれ場合分けする。
(i) のとき:
①より、 すなわち、 または であるが、 の場合 に反する。よって である。
(ii) のとき:
①より、 すなわち、 または であるが、 の場合 に反する。よって である。
(i) (ii) のいずれも かつ を結論付ける。すなわち、 である。
というわけで、無事、命題1が証明されました!
みなさん、いくらでも例題を作ることができてしまいますね!(ぐふふ)
「通分」を考慮する
おいおいちょっと待てよ、と思った方もいるかもしれません。
なんだその足し算は? 「通分」しないのか?
落ち着いてください。ちゃんと「通分」も考慮しますので。
先ほどの例では
と計算していました。
小学校のときを思い出すと、分母を とするのでなく、実際は最小公倍数の としていましたよね。これを「通分」というのでした。
通分を考慮した場合、
となりますが、このケースでは約分が発生しません。
もちろん、通分を考慮すると、すべてのケースで約分が発生しなくなるわけではありません。
たとえば、次の例では
となりますが、この例では適切な通分をしているにも関わらず、約分も発生しています。
むしろこのようなケースの方が本質的な問題ではないかというご指摘を、@toku51n さんという方から頂きました。
その条件下でも
— TokusiN (@toku51n) 2020年6月18日
4/15+9/35=28/105+27/105=55/105=11/21
このような約分が発生する分数の足し算は存在し、そっちが本質だと思います。
分母に冪の同じ素数が含まれる事は必要条件ですが十分条件ではありません。実はこの問題はp進数が関係しています。
もっともなご指摘かと思います。前節の結果をツイートしたところ、たくさんの方から同様のご指摘をいただいたのでした。
というわけで、ここから先は通分を考慮した上で、約分できる条件について考えてみましょう。
約分の定義を改めて見直してみましょう。通分を考慮して分数の足し算を計算すると
となります。ごつい形をしていますが、
は、それぞれ整数になりますから
と置くことにすると
となります。
この右辺が約分できるということは
ということになります。
あとは、これが成り立つ の条件を考えればよいことになります。
ここだけの用語として、特に が素数 で割り切れるとき、「 は で約分できる」ということにしましょう。
また、今回の問題では「ある整数が素数 でちょうど何回割り切れるか」が重要になります。そこで、任意の 0 ではない整数 について、 で「 が でちょうど割り切れる回数」を表すことにしましょう。すなわち、正の整数 に対して
が成り立つとき、 と定義することにします。
これは 進付値と呼ばれるものですが、今回は深く追及するのはやめておきましょう。
このようなセッティングのもとで、次の命題2を証明したいと思います。
このとき,任意の素数 に対して次が成り立つ:
これは、 で約分できるための「必要十分条件ではない」ことに注意しましょう。すなわち、 が成り立つからといって、必ず で約分できるというわけではありません。
一方、対偶をとると、任意の素数 に対して
となりますので、約分できないことの判定には使えます。これについては、あとで具体例を用いて確認してみましょう。
それでは、命題2の証明にいきましょう。
(証明)
まず、最小公倍数は、 進付値を用いて
と表せることに注意する(ここで総積記号 は、すべての素数 に対して積をとることを表す)。
これにより は次のように表せる:
特に、それぞれの 進付値は
となる。
が で割り切れるという仮定より、
である。すなわち、① かつ ② または である。
ここで、②を考慮すると、 は次の (i) ~ (iii) のいずれかの条件を満たす:
ここで、(i) であると仮定すると
である。よって、 かつ である。
①と合わせて、 であることがわかる。
一方、 より であるが、これは であることに矛盾する。よって、(i) は成立しない。
また、(ii) であると仮定しても、同様に矛盾が生じる。
よって、(iii) であると結論付けてよい。
具体例の確認
最後に、命題2について、具体例を通して確認して終わりにしましょう。
例1:
は、
なので、約分されません。
実際、
となり、たしかに約分されていません。
例2:
は、
なので、約分されません。
実際、
となり、たしかに約分されていません。
こんな風に、命題2は約分されないことの判定には使えるわけですね。
例3:
は、
なので、もし約分されるとしたら、その素因数は でなくてはなりません。
実際、
となり、たしかに で約分されています。
もちろん、命題2の直後に注意したように、 で約分されるかどうかは実際割ってみないと分かりません。
特に、今回見てもらったように、
の分母・分子が で約分されるわけですが、 はどれも で割り切れないので、この分子が で割り切れることは全くもって明らかではありません。
一般にこの分数は
と表されますが、 を仮定したときに
であることはすぐにわかります。したがって、どれも で割れない状況下で が で割り切れることを示すことは、何かしら付加的な条件をつけなければ難しそうです。
今回の状況では、 という条件はこれ以上掘り下げられなさそうですが、これでは単に で約分できることの言い換えにすぎません。
というわけで、これ以上進むのは私には困難に見えますので、この辺で筆をおきたいと思います。
いやー、分数の足し算ってめっちゃ難しいですね!
それでは、今日はこの辺で!
面白いと思っていただけましたら、SNSでシェアしていただけると嬉しいです。
続きはこちら!
約分の条件が「p進展開」を使ってかけることがわかりました!
tsujimotter.hatenablog.com