首页 > 编程 > VBScript > 正文

用VBS精确计算2的100次方的代码

2020-06-26 18:25:49
字体:
来源:转载
供稿:网友
即Grade school multiplication(小学乘法?)算法的VBS实现。
 
既然Python可以计算2的100次方,那么我就要用VBS实现。不过这个效率嘛,计算2的10000次方Python用了0.009013秒,VBS用了120.9805秒,不是一个等级的,我就不多说什么了。 

直接上代码: 
复制代码代码如下:

'Date: 2010/10/27 
'Author: Demon 
'QQ: 380401911 
'E-mail: still.demon@gmail.com 

begin = Timer 
n = 1 
For i = 1 To 100 
n = multiple(n, 2) 
Next 
finish = Timer 
WScript.Echo n 
WScript.Echo finish - begin 

'Grade school multiplication, Algorithm 14.12 
'http://www.cacr.math.uwaterloo.ca/hac/about/chap14.pdf 
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 

原文:http://demon.tw/programming/vbs-long-multiplication.html

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表