Представление рационального числа
Известно, что рациональное число в виде десятичной дроби имеет или конечное количество цифр после запятой, либо бесконечное, но можно выделить повторяющуюся последовательность. Предположим стоит задача описать такое рациональное число "рационально" - используя обыкновенную дробь, либо цепную дробь (число представляется конечной цепной дробью тогда и только тогда, когда оно рационально), либо как то ещё. Это необходимо что бы точно, или с заданной точностью оперировать такими числами. Для примера имеем 8/7 = 1,1428571428571... Введём правило, что повторяющаяся последовательность цифр будет содержаться в скобках, тогда для моего примера это выглядит как 1,(1428571) или 1 + 0,(1428571) Имея только такое представление числа, с повторяющейся частью в скобках - 0,(1428571), каким может быть алгоритм перевода такого числа в "рациональное" представление - обыкновенную, цепную дробь, как либо ещё?
Ответы (1 шт):
Достаточно быстро гуглится. Твое число 1,(142857). Работаем с числами после запятой:
- k - количество цифр в периоде. В нашем случае k = 6
- m - количество цифр до периодической части. В нашем случае не существует, поэтому m = 0
- a - все цифры после запятой. Не периодическая часть(в нашем случае нет) + один период. a = 142857.
- b - только не периодическая часть. b = 0
Теперь подставляем все в формулу:
X + (a-b)/9...9 0...0
, где 9...9 - число "9" k раз(в нашем случае 999999) и 0...0 число "0" m раз (в нашем случае не существует), X -целая часть
получаем: 1 + (142857 - 0)/999999 = 1 + 1/7 = 8/7