円周率は奥深い「こつこつアルゴリズム」は凄いね。

1: !こつこつアルゴリズム(Gibbons)を用いて、円周率を求める。
2:
3: INPUT PROMPT "計算したい桁数 ":n
4: PRINT "円周率を";n;"桁求める。"
5:
6: LET q1 = 1
7: LET r1 = 180
8: LET t1 = 60
9: LET i1 = 2
10: LET u1 = 3 * (3 * i1 + 1) * (3 * i1 + 2)
11: LET y1 = INT((q1 * (27 * i1 - 12) + 5 * r1) / 5 / t1)
12: PRINT USING "#.":y1;
13:
14: FOR i = 1 TO n
15: LET q2 = 10 * q1 * i1 * (2 * i1 - 1)
16: LET r2 = 10 * u1 * (q1 * (5 * i1 - 2) + r1 - y1 * t1)
17: LET t2 = t1 * u1
18: LET i2 = i1 + 1
19: LET u2 = 3 * (3 * i2 + 1) * (3 * i2 + 2)
20: LET y2 = INT((q2 * (27 * i2 - 12) + 5 * r2) / 5 / t2)
21: PRINT USING "#":y2;
22: LET q1 = q2
23: LET r1 = r2
24: LET t1 = t2
25: LET i1 = i2
26: LET u1 = u2
27: LET y1 = y2
28: NEXT i

こんな単純なプログラムで円周率が求められるなんて!