i am trying to calculate: A random number in the range 10^25 mod a random number in the range of 100. I saved the first random number as a Variant because the number is too big to be saved as an Integer.
The result of the solution should be something between 1 and 100, so it could be saved as an Integer.
My idea is to break down the numbers into smaller numbers (prim factorisation) and calculate the modulo on smaller numbers, so we don't need to calculate in the range of 10^25.
For example calculation: 300400000717120000131495 mod 97 = 1 How to calc this by using VBA.
Thank you in advance. Fabian
CodePudding user response:
Does this work for you?
Sub test_this()
Debug.Print find_modulus("300400000717120000131495", 97)
End Sub
Function find_modulus(large_number As String, divisor As Long)
Dim quotient As Variant, integer_quotient As Variant
quotient = CDec(large_number)
integer_quotient = Int(quotient / divisor) * divisor
find_modulus = quotient - integer_quotient
End Function
(Variable names changed to make more sense.)