Board logo

标题: [转贴] VBS脚本精确计算100的阶乘的实现代码 [打印本页]

作者: find    时间: 2012-1-16 11:30     标题: VBS脚本精确计算100的阶乘的实现代码

今天又无聊的逛了一下搜搜问问,找到这样一个问题:
有谁能提供vbs里20的阶乘的详细程序

下面有人给出了这样的答案:
  1. function jx(x)
  2. j=1
  3. for i=2 to x
  4. j=j*i
  5. next
  6. jx=j
  7. end function
  8. msgbox jx(20)
复制代码
运行一下上面的程序,输出2.43290200817664E+18。笑而不语,再次证明了我之前的结论,在这种网站上回答问题的,大部分水平都不咋地。

其实之前在《用VBS精确计算2的100次方》我已经写过了VBS的大数乘法,调用一下就行了:
  1. 'Author: Demon
  2. 'Website: http://demon.tw
  3. 'Email: 380401911@qq.com
  4. Option Explicit
  5. Function multiple(byVal x, byVal y)
  6. Dim n, t, i, j, z, w()
  7. n = Len(x) - 1
  8. t = Len(y) - 1
  9. ReDim w(n + t + 1)
  10. x = CStr(x) : y = CStr(y)
  11. For i = 0 To UBound(w)
  12. w(i) = "0"
  13. Next
  14. For i = 0 To t
  15. Dim c : c = 0
  16. Dim uv : uv = 0
  17. For j = 0 To n
  18. uv = (w(i+j)-"0") + c + _
  19. (Mid(x,n-j+1,1)-"0") * (Mid(y,t-i+1,1)-"0")
  20. w(i+j) = CStr(uv Mod 10 + "0")
  21. c = uv \ 10
  22. Next
  23. w(i+n+1) = CStr(uv \ 10 + "0")
  24. Next
  25. z = Join(w,"")
  26. z = StrReverse(z)
  27. Do While Left(z,1) = "0"
  28. z = Mid(z,2)
  29. Loop
  30. multiple = z
  31. End Function
  32. Function factorial(n)
  33. Dim i, t : t = 1
  34. For i = 1 To n
  35. t = multiple(t, i)
  36. Next
  37. factorial = t
  38. End Function
  39. Dim t : t = Timer
  40. WScript.Echo factorial(100)
  41. WScript.Echo Timer - t
复制代码
另外,dogfish也写了一个求1000阶乘的VBS:
  1. dim digits(2568)
  2. max_digit = 2568
  3. digits(max_digit) = 1
  4. for d=2 to 1000
  5. for k=max_digit to ubound(digits)
  6. digits(k) = digits(k) *d
  7. next
  8. k = ubound(digits)
  9. while k>=max_digit
  10. if digits(k)>10 then
  11. digits(k-1) = digits(k-1) + fix(digits(k) / 10)
  12. digits(k) = digits(k) mod 10
  13. if k-1<max_digit then
  14. max_digit = k - 1
  15. end if
  16. end if
  17. k = k-1
  18. wend
  19. next
  20. '把结果转为字串。
  21. str = ""
  22. for i=max_digit to ubound(digits)
  23. str = str & digits(i)
  24. next
  25. msgbox str
复制代码
不过,能写出这样的程序的人,不会无聊到去回答搜搜问问的问题吧。
作者: applba    时间: 2012-1-16 14:13

楼主的代码没有缩进,看起来真是费力。

以前看过一本vb6算法的书,里面提供了2000多个自定义函数,包括高数的微积分函数~
作者: Demon    时间: 2012-1-16 14:34

垃圾脚本之家

http://demon.tw/programming/vbs-factorial.html
作者: Demon    时间: 2012-1-17 20:46

楼主的代码没有缩进,看起来真是费力。

以前看过一本vb6算法的书,里面提供了2000多个自定义函数,包括高 ...
applba 发表于 2012-1-16 14:13


请问一下书的名字是?
作者: applba    时间: 2012-1-17 22:17

回复 4# Demon
哈哈,90年代的书籍,06年的时候我在学校图书馆翻出来的时候已经泛黄了,当时看了没感觉,只觉得很牛逼,名字不记得了,明年暑假我回学校去找找啊……
作者: Demon    时间: 2012-1-17 22:55

回复  Demon
哈哈,90年代的书籍,06年的时候我在学校图书馆翻出来的时候已经泛黄了,当时看了没感觉,只 ...
applba 发表于 2012-1-17 22:17

《Visual Basic 常用数值算法集》?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2