Чтобы вычислить pow(a,b) % n
, который будет использоваться для дешифрования RSA, лучшим алгоритмом, с которым я столкнулся, является тестирование Primality 1), которое выглядит следующим образом:
int modulo(int a, int b, int n){
long long x=1, y=a;
while (b > 0) {
if (b%2 == 1) {
x = (x*y) % n; // multiplying with base
}
y = (y*y) % n; // squaring the base
b /= 2;
}
return x % n;
}
См. ниже ссылку для более подробной информации.
1) Испытание первичности: недетерминированные алгоритмы - topcoder