Rational Counting Function
Haskell, 78 characters

q(r,f)=[(r-b,b)|b&lt;-f[1..r-1],r`gcd`b==1]
d=reverse:id:d
f=((zip[2..]d&gt;&gt;=q)!!)


Sample run:

&gt; map f [0..10]
[(1,1),(2,1),(1,2),(1,3),(3,1),(4,1),(3,2),(2,3),(1,4),(1,5),(5,1)]
&gt; f 100
(17,1)
&gt; f 1000
(3,55)





Edit: (100 → 87) silly me, just testing the gcd is enough!
Edit: (87 → 85) clever trick with cycle and functions to alternate row order
Edit: (85 → 82) replace cycle with the hand-built infinite list d
Edit: (82 → 78) applied gcd identity as suggested by Matías