2017-05-13 2 views
1

私はC++でRational数値クラスを作成しています。 Rational番号は2つのint(分子と分母)で定義されます。 桁番号として適切に表示したいと思います。今のところ、私はその数が "illimited"か限定数の有理数かどうかを決定します。ここで2つの整数で定義された有理有理数を表示します。

を説明するために少し擬似コードです:

define print_rational(num, denom): 
    if(isUnlimited(num, denom): 
     ? 
    else: 
     //"limited" rational, no problem for them 

私はこのようなillimited番号を表示したいと思います。そして、1時間repetitives数字を印刷し、「...」(例:1/3 - > 0.3 ...、1/11 - > 0.09 ...)

したがって、有理数で繰り返す数字ブロックを見つけるアルゴリズムはありますか?

+1

long divisionは、商と剰余との一連の除算によって機能します。同じ残りが2回目にポップアップすると(ピジョンホールの原理では0と1の間であるため)、プロセスサイクルと同じブロックが繰り返されます。従って、本質的にサイクル検出の問題である。 –

+1

私は同じ質問に答えました。 https://softwareengineering.stackexchange.com/questions/192070/what-is-a-efficient-way-to-find-repeating-decimal –

+0

「数字」とは、小数点以下の数字を意味しますか?あなたは、ここでは "illimited"と "limited"という意味ですか?有限または無限に小数点以下の桁数、つまり終了対反復? –

答えて

関連する問題