Jump to content

Continued fraction/Arithmetic/Construct from rational number: Difference between revisions

Line 1,756:
<pre>[1,5,2]
[1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]</pre>
 
=={{header|Icon}}==
<syntaxhighlight lang="icon">
procedure main ()
write_r2cf (1, 2)
write_r2cf (3, 1)
write_r2cf (23, 8)
write_r2cf (13, 11)
write_r2cf (22, 7)
write_r2cf (-151, 77)
write_r2cf (14142, 10000)
write_r2cf (141421, 100000)
write_r2cf (1414214, 1000000)
write_r2cf (14142136, 10000000)
 
# Decimal expansion of sqrt(2): https://oeis.org/A002193
write_r2cf (141421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157,
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)
 
write_r2cf (31, 10)
write_r2cf (314, 100)
write_r2cf (3142, 1000)
write_r2cf (31428, 10000)
write_r2cf (314285, 100000)
write_r2cf (3142857, 1000000)
write_r2cf (31428571, 10000000)
write_r2cf (314285714, 100000000)
 
# 3 + 1/7 = 3 + 0.142857...
write_r2cf (3142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857,
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)
end
 
procedure write_r2cf (N1, N2)
local sep, digit
 
writes (N1, "/", N2, " => ")
sep := "["
every digit := r2cf (N1, N2) do {
writes (sep, digit)
sep := (if sep == "[" then "; " else ", ")
}
write ("]")
end
 
procedure r2cf (N1, N2)
local q, r
while N2 ~= 0 do {
# We will use Icon's native version of integer division, which
# rounds quotients towards zero, and so may return a negative
# remainder.
q := N1 / N2
r := N1 % N2
N1 := N2
N2 := r
suspend q
}
end
</syntaxhighlight>
 
{{out}}
 
<pre> $ icon continued-fraction-from-rational.icn
1/2 => [0; 2]
3/1 => [3]
23/8 => [2; 1, 7]
13/11 => [1; 5, 2]
22/7 => [3; 7]
-151/77 => [-1; -1, -24, -1, -2]
14142/10000 => [1; 2, 2, 2, 2, 2, 1, 1, 29]
141421/100000 => [1; 2, 2, 2, 2, 2, 2, 3, 1, 1, 3, 1, 7, 2]
1414214/1000000 => [1; 2, 2, 2, 2, 2, 2, 2, 3, 6, 1, 2, 1, 12]
14142136/10000000 => [1; 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 1, 2, 4, 1, 1, 2]
141421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157/100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 => [1; 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 1, 8, 3, 1, 2, 2, 1, 6, 2, 2, 3, 1, 2, 3, 1, 1, 39, 1, 3, 1, 2, 4, 10, 1, 6, 1, 30, 5, 2, 1, 1, 1, 1, 1, 32, 1, 4, 18, 124, 3, 2, 1, 1, 8, 1, 1, 1, 6, 15, 2, 3, 2, 7, 1, 4, 9, 2, 7, 1, 1, 1, 1, 1, 2, 1, 10, 1, 31, 5, 1, 1, 1, 7, 1, 14, 10, 3, 11, 1, 2, 1, 65, 4, 9, 2, 3, 2, 2, 9, 1, 1, 2, 1, 1, 2]
31/10 => [3; 10]
314/100 => [3; 7, 7]
3142/1000 => [3; 7, 23, 1, 2]
31428/10000 => [3; 7, 357]
314285/100000 => [3; 7, 2857]
3142857/1000000 => [3; 7, 142857]
31428571/10000000 => [3; 7, 476190, 3]
314285714/100000000 => [3; 7, 7142857]
3142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 => [3; 7, 142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857]</pre>
 
=={{header|J}}==
1,448

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.