質問の循環小数の問題をPythonで解いてみた。

 質問の循環小数の問題Pythonで解いてみました。
 結局、既約分数でない場合について、漏れがあったようです。(^_^;

※参考URL

ある分数を、既約分数になるまで約分して、その分母を素因数分解し、
2と5だけから出来ていれば、有限小数になります。

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1237381767

● RecurringDecimal.py

# coding: UTF-8
# RecurringDecimal.py

from fractions import Fraction

# 有限小数かどうか判定する関数
def isFinite(num,den):
    fra=Fraction(num,den)     # 既約分数にする
    den=fra.denominator       # 既約分数の分母を得る
    while den%2==0:           # 2で割れるところまで割る
        den//=2
    while den%5==0:           # 5で割れるところまで割る
        den//=5
    return den==1

# 循環小数かどうか判定する関数
def isRecurring(num,den):
    return not isFinite(num,den)

def main():
    cnt=0
    for n in range(10,100):
        if isRecurring(23,n): cnt+=1
    print(cnt)

if __name__ == '__main__':
    main()

※参考URL
http://d.hatena.ne.jp/inamori/20090417/p2

●実行結果

78

新課程チャート式基礎からの数学1+A

新課程チャート式基礎からの数学1+A