php通过for循环来计算100的阶乘,HTML_用VBS精确计算100的阶乘的实现代码,今天又无聊的逛了一下搜搜问 - phpStudy...

用VBS精确计算100的阶乘的实现代码

今天又无聊的逛了一下搜搜问问,找到这样一个问题:

有谁能提供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 = 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相关阅读:

Access使用宏控制程序

在SQL Server 2008中订阅策略组

dl,dt,dd标记在网页中要充分利用

IE浏览器兼容Firefox的JS脚本的代码

Web服务器控件:AdRotator控件

NBear的默认分页与自定义分页的比较

PHP和Java 集成开发详解分析 强强联合

一个asp版XMLDOM操作类

PHP实例:实现超级简单的MVC结构

赋NULL值给COOKIES时出现的错误

雷客图 站长安全助手 vbs版代码(asp 木马查找)

背景图片的定位问题详细解析

Windows忘记mysql密码的解决方案

Sql连接查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值