Continued fraction/Arithmetic/Construct from rational number: Difference between revisions
Content deleted Content added
Line 1,756: | Line 1,756: | ||
<pre>[1,5,2] |
<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> |
[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}}== |
=={{header|J}}== |