33 lines
567 B
Nim
33 lines
567 B
Nim
import bignum
|
|
|
|
proc calcPi() =
|
|
var
|
|
q = newInt(1)
|
|
r = newInt(0)
|
|
t = newInt(1)
|
|
k = newInt(1)
|
|
n = newInt(3)
|
|
l = newInt(3)
|
|
|
|
var count = 0
|
|
while true:
|
|
if 4 * q + r - t < n * t:
|
|
stdout.write n
|
|
inc count
|
|
if count == 40: (echo ""; count = 0)
|
|
let nr = 10 * (r - n * t)
|
|
n = 10 * (3 * q + r) div t - 10 * n
|
|
q *= 10
|
|
r = nr
|
|
else:
|
|
let nr = (2 * q + r) * l
|
|
let nn = (7 * q * k + 2 + r * l) div (t * l)
|
|
q *= k
|
|
t *= l
|
|
l += 2
|
|
k += 1
|
|
n = nn
|
|
r = nr
|
|
|
|
calcPi()
|