19 lines
667 B
Plaintext
19 lines
667 B
Plaintext
Function Invoke-ModuloExponentiation ([BigInt]$Base, [BigInt]$Exponent, $Modulo) {
|
|
$Result = 1
|
|
$Base = $Base % $Modulo
|
|
If ($Base -eq 0) {return 0}
|
|
|
|
While ($Exponent -gt 0) {
|
|
If (($Exponent -band 1) -eq 1) {$Result = ($Result * $Base) % $Modulo}
|
|
$Exponent = $Exponent -shr 1
|
|
$Base = ($Base * $Base) % $Modulo
|
|
}
|
|
return ($Result % $Modulo)
|
|
}
|
|
|
|
$a = [BigInt]::Parse('2988348162058574136915891421498819466320163312926952423791023078876139')
|
|
$b = [BigInt]::Parse('2351399303373464486466122544523690094744975233415544072992656881240319')
|
|
$m = [BigInt]::Pow(10, 40)
|
|
|
|
Invoke-ModuloExponentiation -Base $a -Exponent $b -Modulo $m
|