Как получить число Пи (π) с точностью N знаков после запятой.

Наиболее быстрый способ формирования значений цифр после запятой числа π достигается при использовании алгоритма Госпера. Реализация этого алгоритма на языке программирования Python приведена ниже.

import time

def gospers_xpi_unproven(mul=1): #if>=1 => only 1,2,3,4,5,6,10,12,15,20,30,60
    q,r,t,i = 1, 180, int(60/mul), 2
    while True:
        u,y = 3*(3*i+1)*(3*i+2), (q*(27*i-12)+5*r)//(5*t)
        yield y
        q,r,t,i = 10*q*i*(2*i-1),10*u*(q*(5*i-2)+r-y*t),t*u,i+1

startTime = time.time()

xpi = gospers_xpi_unproven() #if>=1 => only 1,2,3,4,5,6,10,12,15,20,30,60
g_xpi=str(next(xpi))+"."
digits=50 #total ("3" is included)
for _ in range(digits-1):
    g_xpi+=str(next(xpi))
print(g_xpi)
executionTime = (time.time() - startTime)
print('Execution time in seconds of gospers_xpi_unproven: ' + str(executionTime))
print("---------------")
Вывод консоли после исполнения кода:
3.1415926535897932384626433832795028841971693993751
Execution time in seconds of gospers_xpi_unproven: 0.0001595020294189453
---------------

В функии есть параметр mul, который позволяет умножать или делить число Пи в ограниченных рамках.

Ссылка на хорошую статью по обзору spigot-алгоритмов с графиками скоростей исполнения: здесь.


Подписка на новости:

Самые полезные и признанные экспертами публикации в сферах IT-бизнеса и Web-разработки:

Сертификат

Certificate for nickname xmoonlight, is registered to: https://sitecoder.blogspot.com