25 lines
937 B
Plaintext
25 lines
937 B
Plaintext
' Modular exponentiation - VB.Net - 21/01/2019
|
|
Imports System.Numerics
|
|
|
|
Private Sub Main()
|
|
Dim a, b, m, x As BigInteger
|
|
a = BigInteger.Parse("2988348162058574136915891421498819466320163312926952423791023078876139")
|
|
b = BigInteger.Parse("2351399303373464486466122544523690094744975233415544072992656881240319")
|
|
m = BigInteger.Pow(10, 40) '=10^40
|
|
x = ModPowBig(a, b, m)
|
|
Debug.Print("x=" & x.ToString)
|
|
End Sub 'Main
|
|
|
|
Function ModPowBig(ByVal base As BigInteger, ByVal exponent As BigInteger, ByVal modulus As BigInteger) As BigInteger
|
|
Dim result As BigInteger
|
|
result = 1
|
|
Do While exponent > 0
|
|
If (exponent Mod 2) = 1 Then
|
|
result = (result * base) Mod modulus
|
|
End If
|
|
exponent = exponent / 2
|
|
base = (base * base) Mod modulus
|
|
Loop
|
|
Return result
|
|
End Function 'ModPowBig
|