
π=3.1415926……无穷多位, 历史上很多人都在计算这个数, 一直认为是一个非常复杂的问题。现在有了电脑, 这个问题就简单了。
电脑可以利用级数计算出很多高精度的值, 有关级数的问题请参考《高等数裂明学》,以下是比较有名的有关π的级数:
π = 2 + 2/3 + 2/3*2/5 + 2/3*2/5*3/7 + ...
例程:
/*这是一位大神编制的算pi程序,精确到800位,具体算法已不可考*/
#include<stdio.h>int main()
{
long a=10000,b=0,c=3500,d=0,e=0,f=0,g[3501]
for(b-c)g[b++]=a/5
for(d=0,f=c*2c-=14,printf( "%.4d ",e+d/a),e=d%a)
察源空for(b=cd+=g[b]*a,g[b]=d%--f,d/=f--,--bd*=b)
败瞎 reutrn 0
}
Private Sub Command1_Click()Dim a As Long, b As Long, d As Long, e As Integer, f(801) As Long, g As Long
Dim i As Long
Dim res As String
Dim index As Long
a = 10000
c = 800
For i = 0 To c
f(i) = a / 5
Next i
'预留足够长的缓冲空间
res = Space(9000)
'指针变量,指出在哪弯宽李里插埋迟入字符串
index = 1
Do While (c <>0)
d = 0
g = c * 2
b = c
Do While (1)
d = d + f(b) * a
g = g - 1
f(b) = d Mod g
d = Fix(d / g)
g = g - 1
b = b - 1
If b = 0 Then GoTo 22
d = d * b
Loop
22:
c = c - 14
substr = Format(Fix(e + d / a), "0000")
'填充字符串的相巧空应区间段数值
Mid$(res, index, 4) = substr
'调整指针变量
index = index + 5
If index >101 Then Exit Do '只显示100位
e = d Mod a
Loop
'删除多余字符
res = Left$(res, index - 1)
Text1.Text = res
Debug.Print index
End Sub
#include<stdio.h>
#include<math.h>
void main()
{
int sign=1// 符号变量 因为要正1-3/1 所以 在进行第一步运算的时候正1-某某
int i=1// 此时的i 也可以等于count 用来存储运算次数 建议用count 我在这里就不改了
double pi=0.0// 我们要求的结果 pi
double n=1.0// 我们的分母
double trem=1.0// 我们的分式本身
while(fabs(trem)>=1e-6) //题干要求的条件表达式
{
pi+=trem //累加式pi=pi+trem
n+=2 // 分母每次加2
sign=-sign// 用来控制符号在这里同时也是充当分子的空陆老作用
trem=sign/n//分式本身=分子/分母
i++ // 每次运算完一遍+1
}
pi*=4// 这里也是根据题干来的 就悉差相当于斗升 1/2 *2 =1
}
望采纳谢谢 有什么不懂的可以随时追我
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)