2009-07-12 3 views
7

私はPythonの小数モジュールを使って分数を扱っています。私は分数の繰り返し部分だけを取得したいと思います。例えば、私が1/3を持っていたら3を得たいと思っています。もし1/7があれば142857を得たいと思います。これを行う標準的な関数はありますか?Pythonで分数の小数部分を繰り返す方法はありますか?

+4

プロジェクトオイラーn°26? – ChristopheD

+0

はい、プロジェクトオイラーn°26. –

+0

私は問題を解決する方法を求めていませんでした、私はちょうどこれをした機能があったかどうか尋ねていた(明らかにそうではありません)。 –

答えて

0

分数の分母で正確に分ける10 ** k - 1という形式の最初の数を見つけ、それを分母で割り、分子で掛けると、繰り返し部分が得られます。

8

答えを与えることはプロジェクトオイラーのスポイラー(これは一般的にここではstackoverflowでは行われません)ですから、このヒントを教えてください:thisを読んでください(セクション1.2でベルが鳴ります)。

+0

これは、ここで起こっていることを理解することは、数学を楽しくする運動です – hansaplast

2

私はこの質問が長い時間前だったと知っていますが、人々はおそらくこのようなものをまだ探していると考えました。長い分割とそれに分割した後に余分になったときに繰り返しが発生する場所を見つけることです。私は実際にAnts Aasmaによって提案された方法を使用しようとしていました。

私の関数は質問に対する答えとして使用できる文字列を出力しようとしていたので、これは1/7の出力を得ようとしていました。 "0.142857 142857 ..."

1/7などの小数は、Ants Aasmaのメソッドを使用すると非常に簡単に見つかりますが、1/35などのようなものを試してみると痛いことがあります。 9の数字でいっぱいです。まず第一に、分母は10分の1の任意の因子を分けなければならない。すなわち、5分の1と2分の1とを1/35から0.2/7のように分ける。

1/70私は、実際に1/7を見つけて小数点以下の直後に0をつけることが最善の方法だと考えています。 1/35の場合は、0.2/7に変換し、2/7に変換し、繰り返し部分と小数点の間に0を設定します。

Ants Aasmaが提案した方法を使用している場合、覚えておくべきヒントのほんの2つです。

関連する問題