a(n) = { if(n == 1, return(3)); my(num = 10^(n-1)+1, e = exp(1), den = num\e, ulim = 10^n, res = 0, delta = ulim, step); if(n%2 == 0, den = 11 * (floor((den-1)\11)+1); step = 11 , step = 1 ); print(den); while(!ispal(den), den+=step); print(den); while(num < ulim, est = num/den; if(gcd(num, den) == 1, cdelta = abs(est - e); if(cdelta < delta, \\print(num" "den); delta = cdelta; res = [num, den] ) ); if(est < e, num = nxt(num) , den = nxt(den) ); ); res[1] \\ res[2] is the corresponding denominator. Replace res[1] by res to print both } ispal(n) = fromdigits(Vecrev(digits(n))) == n nxt(n)=my(d=digits(n)); i=(#d+1)\2; while(i&&d[i]==9, d[i]=0; d[#d+1-i]=0; i--); if(i, d[i]++; d[#d+1-i]=d[i], d=vector(#d+1); d[1]=d[#d]=1); sum(i=1, #d, 10^(#d-i)*d[i])