From 2ac5c9f10ad115631dc3ae32916e80e9e20aaa98 Mon Sep 17 00:00:00 2001 From: Jonathan Li Date: Thu, 15 Mar 2018 14:02:48 -0400 Subject: [PATCH] Added a calculate PI function I added a calculate pi function. I used the Chudnovsky algorithm --- primelib/primelib.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/primelib/primelib.py b/primelib/primelib.py index 70bde8a3982..a284d7f3c22 100644 --- a/primelib/primelib.py +++ b/primelib/primelib.py @@ -38,6 +38,25 @@ goldbach(number) // Goldbach's assumption """ +def pi(maxK=70, prec=1008, disp=1007): + """ + maxK: nuber of iterations + prec: precision of decimal places + disp: number of decimal places shown + """ + from decimal import Decimal as Dec, getcontext as gc + gc().prec = prec + K, M, L, X, S = 6, 1, 13591409, 1, 13591409 + for k in range(1, maxK+1): + M = Dec((K**3 - (K<<4)) * M / k**3) + L += 545140134 + X *= -262537412640768000 + S += Dec(M * L) / X + K += 12 + pi = 426880 * Dec(10005).sqrt() / S + pi = Dec(str(pi)[:disp]) + return pi + def isPrime(number): """ @@ -602,4 +621,4 @@ def fib(n): ans += fib1 fib1 = tmp - return ans \ No newline at end of file + return ans