计算圆周率π(10000)位中出现数字的次数?
vb吧
全部回复
仅看楼主
level 5
小果锅锅 楼主
求求各位大神了,明天就要上交作业了,真心不会啊,哪位好心的大神帮忙看看啊
2016年05月30日 02点05分 1
level 5
小果锅锅 楼主
千万不能沉啊,沉了我就该毕业了,哇哇哇哇哇哇,好心的大神啊,快来帮帮我吧
2016年05月30日 03点05分 2
level 5
小果锅锅 楼主
不能沉不能沉啊,在线等,急求啊,啊啊啊啊啊啊
2016年05月30日 03点05分 3
level 5
小果锅锅 楼主
求求好心的大神了,来人啊
2016年05月30日 03点05分 4
吧务
level 13
该毕业了 不是很好吗[真棒]
出现的次数就是10000次啊 [滑稽]
2016年05月30日 03点05分 5
是0-9 10个数字分别出现的次数啊 大神求教
2016年05月30日 03点05分
@小果锅锅 哦哦
2016年05月30日 04点05分
@命幽 大神能不能帮帮忙啊,真心不会,,,
2016年05月30日 04点05分
@小果锅锅 还没有解决吗 不会吧。。。
2016年05月30日 09点05分
level 2
这tm的有什么好求教的. 定好π要统计的位数.把π转成字符串 for循环一下不就出来了.
2016年05月30日 04点05分 6
[汗][汗]毕竟不是专业的,听不懂啊,这是我们的一个选修课的作业,原谅文科生没有这样的思维吧[泪][泪] 大神你能给我一段代码吗[乖][乖]
2016年05月30日 04点05分
@小果锅锅 楼下
2016年05月30日 04点05分
@命幽 我发现一些神奇的事情,没有得到答案之前一直发帖,得到答案后不是失踪就是删帖,你有没有遇到过[滑稽]
2016年05月30日 07点05分
回复 yjtx256 :什么呀 没有失踪好不好大神 上午第二大节我们没有课所以有时间贴吧求救啊
2016年05月30日 07点05分
level 10
π是给定的还是要自己算?
给定了π的话就这样:
2016年05月30日 04点05分 7
好心大神,我要拿什么变量类型来存放这个10000位的圆周率啊,π要自己求不是给定的[泪][泪]
2016年05月30日 08点05分
level 10
Const pi As String = "3.1415926535"
Dim p As String
Dim n(9) As Long
Dim i As Long
Dim j As Integer
p = Replace(pi, ".", "") '去除小数点
For i = 1 To Len(p)
j = Val(Mid(p, i, 1))
n(j) = n(j) + 1
Next i
For i = 0 To 9
Print i & "出现" & n(i) & "次"
Next i
2016年05月30日 04点05分 8
10000位内的。。。
2016年05月30日 07点05分
回复 ztw1122 :嗯啊 10000位以内的 先要自己计算出来然后再统计次数
2016年05月30日 07点05分
level 11
α/4=1-1/3+1/5-1/7+1/9-1/11+…-1/99 按这个公式,要求出10000位的π double都装不下,得用字符串,然后要实现字符串的 加减乘除,最后遍历字符串,得出次数。
2016年05月30日 07点05分 9
level 5
小果锅锅 楼主
那就定义个字符串来放它呗 然后用8楼的代码 我还没来得及试试呢
2016年05月30日 07点05分 10
不行的,字符串的话必须自己实现加减乘除,现成的运算会溢出的。。。10000位啊。
2016年05月30日 07点05分
@ztw1122 所以现在就是要想办法求出并存放这个10000位的圆周率么,,,?
2016年05月30日 08点05分
level 10
Option Explicit
Private Sub Command1_Click()
Dim pi As String
Dim n(9) As Long
Dim i As Long
Dim j As Integer
pi = getpi
For i = 1 To Len(pi)
j = Val(Mid(pi, i, 1))
n(j) = n(j) + 1
Next i
For i = 0 To 9
Print i & "出现" & n(i) & "次"
Next i
End Sub
Function getpi(Optional ByVal nums As Long = 10000) As String
nums = nums / 5
Dim max As Long, laptime As Single, result() As String
Dim i As Long, j As Long, t, d As Long, g, k As Long, f()
laptime = Timer
max = 18 * nums
ReDim f(0 To max)
ReDim result(nums)
For i = 0 To max
f(i) = 20000
Next
g = 20000
For j = max To 1 Step -18
t = 0
For i = j To 1 Step -1
t = t + f(i) * 100000
d = 2 * i + 1
f(i) = t - Int(t / d) * d
t = Int(t / d) * i
Next
result(k) = Format(Int(g + t / 100000) Mod 100000, "00000")
k = k + 1
g = t Mod 100000
Next
getpi = Join(result, "")
Me.Caption = "计算完毕!总计用时" & Timer - laptime & "秒!"
End Function
2016年05月30日 08点05分 11
[真棒]
2016年06月14日 04点06分
level 1
2023年09月03日 20点09分 12
1