CJam - 48
3.1o{1YAZ2*:Z#*{_2$*2$2*)/@)\}h*]:+sX2*:X>X<o1}g
สิ่งนี้จะคำนวณπเป็น 2 * ผลรวม (k! / (2k + 1) !!) ด้วยความแม่นยำที่มากขึ้นและมากขึ้นและในทุกขั้นตอนจะพิมพ์ตัวเลขจำนวนหนึ่งจากตำแหน่งที่เหลือ
คุณสามารถลองใช้เวอร์ชันที่แก้ไขแล้วซึ่งทำซ้ำเพียง 8 (ลูปนอก) เท่านั้นและพิมพ์ 512 หลักหรือใช้ล่าม javaสำหรับของจริง บนแล็ปท็อปของฉันมันได้ตัวเลข 16,384 หลักในเวลาประมาณ 6 วินาที
หมายเหตุ: โปรแกรมนี้หิวมากหน่วยความจำ รุ่นที่ประพฤติดีขึ้น แต่อีกเล็กน้อยคือ:
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