VB语言

本类阅读TOP10

·Visual Basic 安装程序的制作!!
·VB中使用EXCEL输出
·一个简单的MP3播放器
·VB程序实现WindowsXP效果的界面!!
·VB打造超酷个性化菜单(六)
·透明位图
·平铺与拉伸MDI窗口的背景图 ~!~
·对《VB程序实现WindowsXP效果的界面》一文的补遗
·从Windows资源管理器中拖动文件
·VB打造超酷个性化菜单(一)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
大数阶乘的计算(三)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

下面的算法在 http://www.csdn.net/Develop/Edit.asp?id=28308基础上改进,比其至少快10%:

Sub calcfactorial(ByVal n As Integer)
Dim XYS() As Integer, x() As Integer, y() As Integer, result() As String, i As Long, j As Long, k As Long, TEMP As Long, stimer As Double
If n < 0 Then Exit Sub
ReDim x(1)
ReDim XYS(1)
x(1) = 1
XYS(1) = 1
k = 1
stimer = Timer
Do While k <= n

TEMP = Len(CStr(k))
ReDim y(1 To TEMP)
For i = 1 To TEMP
y(i) = Val(Mid(k, TEMP + 1 - i, 1))
Next
ReDim XYS(1 To UBound(x) + UBound(y))
For i = 1 To UBound(x)
For j = 1 To UBound(y)
XYS(i + j - 1) = XYS(i + j - 1) + x(i) * y(j)
Next
Next
For i = 1 To UBound(x) + UBound(y) - 1
TEMP = XYS(i) \ 10
XYS(i) = XYS(i) Mod 10
XYS(i + 1) = XYS(i + 1) + TEMP
Next

x = XYS
If x(UBound(x)) = 0 Then ReDim Preserve x(1 To UBound(x) - 1)
k = k + 1
Loop
ReDim result(1 To UBound(x))
For i = 1 To UBound(x)
result(i) = x(UBound(x) + 1 - i)
Next

factorial = Join(result, "")
Debug.Print k - 1 & "! : 用时 "; Timer - stimer & " 秒, 结果 " & UBound(x) & " 位"
'Debug.Print factorial
Erase x()
Erase y()
Erase XYS()
Erase result()
End Sub


 

Private Sub Command1_Click()
For i = 1 To 9
calcfactorial i * 100
Next
For i = 1 To 10
calcfactorial i * 100
Next

End Sub

结果输出:

100! : 用时 1.17187501018634E-05 秒, 结果 158 位
200! : 用时 3.10087890625255E-02 秒, 结果 375 位
300! : 用时 .1090087890625 秒, 结果 615 位
400! : 用时 .219002929687576 秒, 结果 869 位
500! : 用时 .344011718749925 秒, 结果 1135 位
600! : 用时 .547008789062602 秒, 结果 1409 位
700! : 用时 .75 秒, 结果 1690 位
800! : 用时 .9840087890625 秒, 结果 1977 位
900! : 用时 1.281005859375 秒, 结果 2270 位
1000! : 用时 1.59400292968758 秒, 结果 2568 位
2000! : 用时 8.36000292968743 秒, 结果 5736 位
3000! : 用时 20.4220146484374 秒, 结果 9131 位
4000! : 用时 38.1090146484376 秒, 结果 12674 位
5000! : 用时 61.6250058593751 秒, 结果 16326 位
6000! : 用时 91.1560175781251 秒, 结果 20066 位
7000! : 用时 126.781014648438 秒, 结果 23878 位
8000! : 用时 168.610005859375 秒, 结果 27753 位
9000! : 用时 216.530892578125 秒, 结果 31682 位
10000! : 用时 271.000017578125 秒, 结果 35660 位

 




相关文章

相关软件




月光软件源码下载编程文档电脑教程网站优化网址导航网络文学游戏天地生活休闲写作范文安妮宝贝站内搜索
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有