编成实现模重复平方法的c语言算法
时间: 2023-05-29 16:04:44 浏览: 94
模重复平方算法 C语言
5星 · 资源好评率100%
以下是用C语言实现模重复平方法的算法:
```c
#include <stdio.h>
int modExp(int base, int exponent, int mod) {
int result = 1;
base = base % mod;
while (exponent > 0) {
if (exponent & 1)
result = (result * base) % mod;
exponent = exponent >> 1;
base = (base * base) % mod;
}
return result;
}
int main() {
int base, exponent, mod;
printf("Enter base, exponent, and mod: ");
scanf("%d %d %d", &base, &exponent, &mod);
int result = modExp(base, exponent, mod);
printf("%d^%d mod %d = %d\n", base, exponent, mod, result);
return 0;
}
```
在该算法中,`modExp`函数使用了位运算的技巧,将指数分解成二进制形式,然后通过平方和乘法操作来计算幂次。这个算法的时间复杂度为O(log n),因为它只需要执行指数大小的对数次操作。
阅读全文