设第n项为r_n=q_n/p_n
而ln(q_n)=lq_n, ln(p_n)=lp_n
而通过数值计算直接可以算出r_n比较精确的值,所以我们可以如下看
我们知道p_{n+1}=p_nq_n,所以lp_{n+1}=lp_n+lq_n
而q_{n+1}=p_n^2+q_n^2=p_n^2(1+r_n^2)
所以lq_{n+1} = 2*lp_n+ln(1+r_n^2)
由此可以得出Pari/Gp代码
fun(n)={
local(lp,lq,r,t,l10);
lp=0.0;lq=0.0;r=1.0;l10=log(10);
for(u=1,n,
t=lp+lq;
lq=2*lp+log(1.0+r^2);
r=r+1.0/r;
lp=t
);
[lp/l10,lq/l10]
}
于是取100位浮点精度和200位浮点精度计算分别得出
%16 = [238318477254216924495956776243.352781824415825942916853855599301492676307
1756923166245041047608370275, 238318477254216924495956776244.5076336130298128786
551963407533945966273377671920790072055207491552362]
(15:15) gp > \p 200
realprecision = 202 significant digits (200 digits displayed)
(15:15) gp > fun(100)
%17 = [238318477254216924495956776243.352781824415825942916853855599301492676307
17569231662450410476083702749891171046141306485952917262407637804304387488050626
421274353692778559449603795877937524913686247815, 238318477254216924495956776244
.5076336130298128786551963407533945966273377671920790072055207491552361637367615
71188720631926165795914570864131925441785591379863603475238793021535857009952315
90919351043]
可以看出计算精度是非常高的
也就是p的位数238318477254216924495956776244,q的位数238318477254216924495956776245
而p开始的各位数值也可以算出来为225310703925849243065012328342402382512501335616033022403492766379318451...
q开始的各位数值也可以算出来为321835252383843456524590441752513225578499456511062447450136831679261185I