// expon: calculates a^b, where
// b = b[k] b[k-1] ... b[0] (binary)
// Rewritten from your text.
int expon(int a, int b[], int k) {
int d = 1; // final result
int i;
for (i = k; i >= 0; i--) {
d = d * d;
if (b[i] == 1) d = d * a;
}
return d;
} |
|
// expon: fast exponentiation
// presented in class
int expon(int a, int b) {
int d = 1; // final result
while(b > 0) {
if (b%2 == 1) d = d*a;
b = b/2;
if (b > 0) a = a*a;
}
return d;
}
|
|