Befunge-98 (PyFunge), 120 byte
cf*10p'<20p11>00p1+:30p:::*+39**6+:30g39**c-00g*10gv
>:2*1-*00g*a*^
^:p02*g02p01*a*-*g02\+g01*g00-2*5g03,+*86:/*5g02+*5<
Cobalah online!
Ini adalah batas dalam hal timelimit. 10.000 digit memakan waktu sekitar 11 detik di laptop saya, tapi saya yakin pasti ada PC yang "masuk akal" yang bisa melakukannya lebih cepat dari itu.
Namun, jika Anda mencobanya di TIO, perhatikan bahwa itu tidak akan mengembalikan apa pun hingga mencapai batas waktu 60 detik, karena algoritma ini dirancang untuk terus berjalan selamanya. Pada saat itu Anda akan memiliki lebih dari 10.000 digit.
Saya menggunakan algoritma keran Jeremy Gibbons, yang menurut saya sama dengan sebagian besar jawaban lain di sini. Namun, perhatikan bahwa ini bergantung pada juru bahasa yang memiliki sel-sel memori presisi yang sewenang-wenang, dan satu-satunya implementasi yang saya ketahui yang mendukungnya adalah PyFunge .
Penjelasan
cf*10p Initialise r to 180.
'<20p Initialise t to 60.
11 Initialise i and q on the stack to 1.
> Start of the main loop.
00p Save the current value of q in memory.
1+:30p Increment i and save a copy in memory.
:::*+39**6+ Calculate u = 27*(i*i+i)+6.
: Make a duplicate, since we'll need two copies later.
30g39**c-00g*10gv Calculate y = (q*(27*i-12)+5*r)/(5*t).
/*5g02+*5<
,+*86: Convert y to a character so we can output it.
*a*-*g02\+g01*g00-2*5g03 Calculate r = 10*u*(q*(i*5-2)+r-y*t)
p01 Save the updated r.
*g02 Calculate t = t*u
p02 Save the updated t.
>:2*1-*00g*a* Calculate q = 10*q*i*(i*2-1).
^:
^ Return to the start of the main loop.