我目前正在開發一個程式來計算第一個大二學生的夢想常數 I1 的 100,000 位數字。它由下面的總和給出。

在本系列中大約 10,000 個術語之后,它變得相當緩慢。我選擇把程式寫得這么小,因為我想看看我能把它做得多小
from decimal import *
def sophodream(a):
s,i,t=0,1,int(a*1.5)
while i<t:
print(i)
n,d=Decimal(pow(-1,i 1)),Decimal(i**i)
f=n/d
s =f
i =1
return s
我想知道除了多執行緒/多處理之外是否有任何方法可以加快速度。我發現當我在螺紋件中進行這樣的系列時,它們的準確性會降低。
uj5u.com熱心網友回復:
可以對您的代碼進行一些小的更改/簡化,但正如已經指出的那樣,您(有時)正在處理一些非常大的數字。
from decimal import getcontext, Decimal
def sophodream(a):
s, p = 0, 1
getcontext().prec = a
for i in range(1, int(a * 1.5)):
s = p / Decimal(i**i)
p = -p
return s
print(sophodream(100))
輸出:
0.7834305107121344070592643865269754694076819901469309582554178227016001845891404456248642049722689389
顯然只是一個非常簡短的版本來證明功能
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/451721.html
