/** * FastExpon is a fast computational algorithm for computing large exponents. x^e % m * This algorithm was used for a cryptography course dealing with RSA. * Feel free to slice it up for yourself. :) * @author Alan Lambkin * @version 1.0 September 2006 */ public class FastExpon { public long y = 1; /** * Performs the calculation... * While the exponent is not zero: * If the exponent is even, square the base, mod m, and divide the exponent by 2. * If the exponent is odd, mulitply the base times y (initially set to 1) mod m, * now place that value into y, and subtract 1 from the exponent. * @parm x the base * @parm e the exponent * @parm m the mod * @return The answer, x raised to e, mod m. */ public long fex(long x, long e, long m) { while (e != 0) { if (e%2==0) { x=x*x%m; e=e/2; } else { y=x*y%m; e=e-1; } } return y; } /** * Just a simple main program so I can test before posting. * Prints out the answer. */ public static void main(String[] args) { long x = 6916502; long e = 2773637; long m = 8326363; FastExpon f = new FastExpon(); System.out.println(x + " raised to the " + e + " power, mod " + m + " = " + f.fex(x,e,m)); } }