用VBS精确计算100的阶乘的实现代码
作者 佚名
来源 ASP编程
浏览
发布时间 2013-07-09
今天又无聊的逛了一下搜搜问问,找到这样一个问题: 有谁能提供vbs里20的阶乘的详细程序 下面有人给出了这样的答案: 复制代码 代码如下: function jx(x) j=1 for i=2 to x j=j*i next jx=j end function msgbox jx(20) 运行一下上面的程序,输出2.43290200817664E+18。笑而不语,再次证明了我之前的结论,在这种网站上回答问题的,大部分水平都不咋地。 其实之前在《用VBS精确计算2的100次方》我已经写过了VBS的大数乘法,调用一下就行了: 复制代码 代码如下: ''Author: Demon ''Website: http://demon.tw ''Email: 380401911@qq.com Option Explicit Function multiple(byVal x, byVal y) Dim n, t, i, j, z, w() n = Len(x) - 1 t = Len(y) - 1 ReDim w(n + t + 1) x = CStr(x) : y = CStr(y) For i = 0 To UBound(w) w(i) = "0" Next For i = 0 To t Dim c : c = 0 Dim uv : uv = 0 For j = 0 To n uv = (w(i+j)-"0") + c + _ (Mid(x,n-j+1,1)-"0") * (Mid(y,t-i+1,1)-"0") w(i+j) = CStr(uv Mod 10 + "0") c = uv \ 10 Next w(i+n+1) = CStr(uv \ 10 + "0") Next z = Join(w,"") z = StrReverse(z) Do While Left(z,1) = "0" z = Mid(z,2) Loop multiple = z End Function Function factorial(n) Dim i, t : t = 1 For i = 1 To n t = multiple(t, i) Next factorial = t End Function Dim t : t = Timer WScript.Echo factorial(100) WScript.Echo Timer - t 另外,dogfish也写了一个求1000阶乘的VBS: 复制代码 代码如下: dim digits(2568) max_digit = 2568 digits(max_digit) = 1 for d=2 to 1000 for k=max_digit to ubound(digits) digits(k) = digits(k) *d next k = ubound(digits) while k>=max_digit if digits(k)>10 then digits(k-1) = digits(k-1) + fix(digits(k) / 10) digits(k) = digits(k) mod 10 if k-1<max_digit then max_digit = k - 1 end if end if k = k-1 wend next ''把结果转为字串。 str = "" for i=max_digit to ubound(digits) str = str & digits(i) next msgbox str 不过,能写出这样的程序的人,不会无聊到去回答搜搜问问的问题吧。 原文:http://demon.tw/programming/vbs-factorial.html |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 自动复制U盘文件的VBS脚本下一篇: VBS 偏移量解密工具[算法解密]
关于用VBS精确计算100的阶乘的实现代码的所有评论