CJam-48
3.1o{1YAZ2*:Z#*{_2$*2$2*)/@)\}h*]:+sX2*:X>X<o1}g
이것은 π를 더 큰 정밀도로 2 * sum (k! / (2k + 1) !!)로 계산하며 모든 단계에서 중단 된 자리부터 여러 자리수를 인쇄합니다.
당신은 할 수 있습니다 온라인으로 시도 단지 8 (외부 루프) 반복을 수행하고 512 자리 숫자를 인쇄하는 수정 된 버전을, 또는 사용하는 자바 인터프리터를 진짜를 위해. 내 노트북에서는 약 6 초 안에 16384 자리 숫자가됩니다.
참고 :이 프로그램은 메모리가 매우 부족합니다. 더 잘 동작하지만 약간 더 긴 버전은 다음과 같습니다.
3.1o{T2AZ2*:Z#*1{@2$+@2$*2$2*)/@)1$}g;;sX2*:X>X<o1}g
설명:
3.1o print 3.1
{…1}g repeat indefinitely
1YA push 1, 2 and 10 (Y=2, A=10)
Z2*:Z push Z*2 (Z=3 initially) and store back in Z
#* calculate 2*10^Z (2 from the formula and 10^Z for precision)
this is the term for k=0, and the earlier 1 represents k
{…}h do-while
at each iteration, the stack contains: terms, k, last-term
_2$* copy the previous term and k and multiply them
2$2*)/ divide the previous number by 2*k+1
this is the current term of the series
@)\ increment k and move it before the current term
the current term now serves as the loop condition
so the loop terminates when the term becomes 0
* multiply k and the last term (0), to get rid of k
]:+s put all the terms in an array, add them and convert to string
we obtain an approximation of π*10^Z
X2*:X push X*2 (X=1 initially) and store back in X
>X<o print X digits starting from the X position