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