Вы ищете что-то подобное?
ГГ ^ XX (мод QQ)
int fastMod(int YY, int XX, int QQ){
int ZZ; //declare variables
int RR = 1;
while (XX != 0){ //while XX != 0
ZZ = XX % 2; //mod XX by 2
XX= XX/2; //divide XX by 2
if (ZZ == 1) //if ZZ is one
RR = (RR * YY) % QQ; //mod (RR*YY) by QQ
YY= (YY * YY) % QQ; //mod (YY*YY) by QQ
}
return RR; //return int
}
Когда вы начнете использовать числа GIANT, вам нужно будет использовать модульную арифметику.
Это становится особенно полезным при генерации больших простых чисел, как в алгоритме RSA.
Основы модульной арифметики освещены здесь:
http://www.brainjammer.com/math/modular-arithmetic/