## Sage – <s>119</s> 117 <!-- language: lang-python --> x,X=map(int,sys.argv[1].split('/')) a=0 A=c=C=1 while C<X:exec("ab,,AB"[c*X>C*x::2]+"=c,C");c=a+b;C=A+B print a/A,b/B Sage is only needed in the last line, which takes care of the output. Everything else also works in Python. Replace `raw_input()` with `sys.argv[1]` to have the input read from a command-line argument instead of a prompt. This does not change the character count. (Does not work in Python without importing `sys` first.) This essentially recursively constructs the respective [Farey sequence](http://en.wikipedia.org/wiki/Farey_sequence) using mediants of the existing elements, but restricts itself to those elements closest to the input. From another point of view, it runs a nested-interval search on the respective Farey sequences. It correctly processes all of the examples in less than a second on my machine. Here is an ungolfed version: <!-- language: lang-python --> x,X = map(Integer,sys.argv[1].split('/')) x = x/X a = 0 c = 1 while c.denominator() < X: if c > x: b = c else: a = c c = ( a.numerator() + b.numerator() ) / ( a.denominator() + b.denominator() ) print a,b