プログラミングコンテストでは、分数を分数のまま出力させる場合が、たまにあります。
その際に、約分ができるのであれば、約分した形での出力が求められることがほとんどです。
また、この機能の使い所として、
少数となる計算結果の比較が必要となる問題などで、
無理に割り算を行うと、少数の精度がうまくとれず、誤った解答となる場合があります。そんな場合に、今回ご紹介する方法では、割り切れない分数はそのまま保持しますので、うまくその精度問題を回避できることがあります。decimalモジュールを使用するような問題の場合ですね。
以下に、python3 で分数を約分した形で出力する方法を紹介します。
Fraction(numerator, denominator)
特に難しいことはなく、 fractionsモジュール を用いて Fraction(numerator, denominator) としてやれば、約分された分数を得ることができます。
ここで引数については、
・ numerator が分母
・ denominator が分子 となります。
import文、from fractions import Fraction が必要ですのでご注意下さい。
また、最終的に分母が 1 となる場合は、分子のみが出力されるようです。
以下に、コードの例を示します。
from fractions import Fraction
#(1) 約分できる場合
my_numerator = 2
my_denominator = 6
print(Fraction(my_numerator,my_denominator))
# --> 1/3
#(2)約分できない場合
my_numerator = 5
my_denominator = 26
print(Fraction(my_numerator,my_denominator))
# --> 5/26
#(3)そもそも割り切れる場合
my_numerator = 100
my_denominator = 25
print(Fraction(my_numerator,my_denominator))
# --> 4