Befunge-98 (PyFunge), 120 байт
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<
Спробуйте в Інтернеті!
Це граничне значення з точки зору часу. 10000 цифр займають близько 11 секунд на моєму ноутбуці, але я впевнений, що повинен бути "розумний" ПК, який міг би зробити це швидше.
Однак якщо ви спробуєте це в TIO, зауважте, що він нічого не поверне, доки не досягне 60-секундного обмеження, оскільки алгоритм призначений для продовження роботи. На той час у вас буде набагато більше 10 000 цифр.
Я використовую алгоритм шпигуна Джеремі Гіббонса, який, на мою думку, є таким же, як і більшість інших відповідей тут. Однак зауважте, що це покладається на інтерпретатора, що має довільну комірку пам’яті точності, і я знаю єдину реалізацію, яка підтримує, це PyFunge .
Пояснення
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.