go ?=> member(N,1..11), Farey = farey(N), println(N=Farey), fail, nl. go => true. farey(N) = M => M1 = [0=$(0/1)] ++ [I2/J2=$(I2/J2) : I in 1..N, J in I..N, GCD=gcd(I,J),I2 =I//GCD,J2=J//GCD].sort_remove_dups(), M = [ E: _=E in M1]. % extract the rational representation