вот есть в сишнике строчка:

e=((long int)pow(a,n-1))%n;

и какого хера она дает отрицательные числа????
тут же вроде идет сравнение по модулю? или я отстал от жизни?