Extreme calculations
I made a slight change and I'm getting 160899 has an answer. I had one loop
counter going once too many. Are you sure your answer is correct? I don't
see what is wrong with my method of using string to get the answer.
"Jerry W. Lewis" wrote:
The correct answer is 102308.
Jerry
"Joel" wrote:
I get the answer 145120 with the following code
Sub largemultiply()
Dim MyTotal As String
MyTotal = "13"
For i = 1 To 270
MyTotal = Multiply(MyTotal, "13")
Next i
Remainder = Divide(MyTotal, "162653")
End Sub
Function Multiply(parm1 As String, parm2 As String) As String
Multiply = ""
carry = 0
For i = 0 To (Len(parm1) - 1)
mychar1 = Mid(parm1, Len(parm1) - i, 1)
total = ""
For j = 0 To (Len(parm2) - 1)
mychar2 = Mid(parm2, Len(parm2) - j, 1)
prod = (Val(mychar1) * Val(mychar2)) + carry
carry = Int(prod / 10)
Remainder = prod Mod 10
total = Trim(CStr(Remainder)) & total
Next j
If Multiply = "" Then
Multiply = total
Else
Multiply = Add(Multiply, total, i)
End If
Next i
End Function
Function Add(Multiply, total, shift)
carry = 0
If shift 0 Then
Add = Right(Multiply, shift)
Else
Add = ""
End If
For i = 0 To Len(total) - 1
If Len(Multiply) (i + shift) Then
add1 = Val(Mid(Multiply, Len(Multiply) - (i + shift), 1))
Else
add1 = 0
End If
add2 = Val(Mid(total, Len(total) - i, 1))
Sum = add1 + add2 + carry
carry = Int(Sum / 10)
bit = Sum Mod 10
Add = bit & Add
Next i
If carry < 0 Then
Add = carry & Add
End If
End Function
Function Divide(Quotent, Divisor)
Dim Remainder As Long
NDivisor = Val(Divisor)
NewQuotent = Val(Left(Quotent, Len(Divisor)))
loops = (Len(Quotent) - Len(Divisor))
For i = 0 To loops
Remainder = NewQuotent Mod NDivisor
If i < loops Then
Newbit = Mid(Quotent, i + Len(Divisor) + 1, 1)
NewQuotent = (Remainder * 10) + Val(Newbit)
End If
Next i
Divide = Remainder
End Function
"Diogo" wrote:
Need to calculate via Excel:
mod(13^271;162653)
Any thoughts????
Thanks
|