У меня была проблема, что из расчета a^b mod m
, является можно с помощью модульного возведения в степень, но проблема я имею в том, что б у меня есть очень большое значение, b > 2^63 - 1
так мы можем изменить модульный код возведения в степеньModulus Силы
function modular_pow(base, exponent, modulus) result := 1 while exponent > 0 if (exponent mod 2 == 1): result := (result * base) mod modulus exponent := exponent >> 1 base = (base * base) mod modulus return result
для размещения такого большого b
или это правильно, что a^b mod m
равно (a^(b mod m)) mod m
?
Ваш вопрос лучше задать здесь: http://math.stackexchange.com/ Но я действительно помню, что существует такое равенство. – Dave
http://stackoverflow.com/a/11272606/1180785 – Dave