File tree 1 file changed +52
-0
lines changed
1 file changed +52
-0
lines changed Original file line number Diff line number Diff line change
1
+ """
2
+ Finding the continuous fraction for a rational number using python
3
+
4
+ https://en.wikipedia.org/wiki/Continued_fraction
5
+ """
6
+
7
+
8
+ from fractions import Fraction
9
+
10
+
11
+ def continued_fraction (num : Fraction ) -> list [int ]:
12
+ """
13
+ :param num:
14
+ Fraction of the number whose continued fractions to be found.
15
+ Use Fraction(str(number)) for more accurate results due to
16
+ float inaccuracies.
17
+
18
+ :return:
19
+ The continued fraction of rational number.
20
+ It is the all commas in the (n + 1)-tuple notation.
21
+
22
+ >>> continued_fraction(Fraction(2))
23
+ [2]
24
+ >>> continued_fraction(Fraction("3.245"))
25
+ [3, 4, 12, 4]
26
+ >>> continued_fraction(Fraction("2.25"))
27
+ [2, 4]
28
+ >>> continued_fraction(1/Fraction("2.25"))
29
+ [0, 2, 4]
30
+ >>> continued_fraction(Fraction("415/93"))
31
+ [4, 2, 6, 7]
32
+ """
33
+ numerator , denominator = num .as_integer_ratio ()
34
+ continued_fraction_list : list [int ] = []
35
+ while True :
36
+ integer_part = int (numerator / denominator )
37
+ continued_fraction_list .append (integer_part )
38
+ numerator = numerator - integer_part * denominator
39
+ if numerator == 0 :
40
+ break
41
+ numerator , denominator = denominator , numerator
42
+
43
+ return continued_fraction_list
44
+
45
+
46
+ if __name__ == "__main__" :
47
+
48
+ import doctest
49
+
50
+ doctest .testmod ()
51
+
52
+ print ("Continued Fraction of 0.84375 is: " , continued_fraction (Fraction ("0.84375" )))
You can’t perform that action at this time.
0 commit comments