2017-05-13 20 views
1

저는 C++에서 Rational 번호 클래스를 사용하고 있습니다. Rational 번호는 두 개의 int (분자 및 분모)로 정의됩니다. 숫자로 올바르게 표시하고 싶습니다. 지금은 번호가 "illimited"또는 제한된 숫자의 유리수인지 확인합니다. (예 다음, 한 번에게 repetitives 숫자를 인쇄 "...":2 개의 정수로 정의 된 illim 된 유리수를 표시합니다.

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

이 같은 illimited 번호를 표시 할 것입니다 :

여기

는 설명하기 위해 약간의 의사 코드 1/3 - > 0.3 ..., 1/11 -> 0.09 ...)

그럼 합리적인 숫자로 반복 될 자릿수 블록을 찾는 알고리즘이 있습니까?

+1

long division은 몫 및 나머지가있는 일련의 나누기로 작동합니다. 동일한 나머지가 두 번째로 튀어 오르는 경우 (비둘기 홀 원칙에 따라 0과 1을 포함해야하므로 원칙적으로 처리주기가 반복되고 동일한 블록이 반복됩니다. 따라서 본질적으로주기 탐지의 문제입니다. –

+1

나는 같은 질문에 답했다. https://softwareengineering.stackexchange.com/questions/192070/what-is-a-efficient-way-to-find-repeating-decimal –

+0

"숫자"는 10 진수로 표시된 숫자입니까? 당신은 여기에서 "illimited"와 "limited"를 의미합니까? 당신은 유한하거나 무한히 많은 소수 자릿수를 의미합니까? 종료 대 반복? –

답변