快速幂取模c语言写法
时间: 2024-10-16 17:10:36 浏览: 40
快速幂算法是一种用于高效计算大整数乘方并取余数的数学技巧,尤其适用于当指数很大时。在C语言中,我们可以使用循环来实现这个过程,避免直接递归计算带来的栈溢出问题。以下是基本的快速幂取模算法的C语言写法:
```c
#include <stdio.h>
// 定义快速幂函数
long long fastPowerMod(long long base, long long exponent, long long modulus) {
long long result = 1; // 初始化结果为1
while (exponent > 0) { // 当指数大于0时
if (exponent % 2 == 1) { // 如果指数是奇数
result = (result * base) % modulus; // 将base乘以当前结果并取模
}
base = (base * base) % modulus; // 将base自乘并取模,将指数减半
exponent /= 2; // 更新指数为偶数部分
}
return result; // 返回最终的结果
}
int main() {
long long base = 7;
long long exponent = 1000000007;
long long modulus = 998244353;
printf(" (%lld)^%lld mod %lld = %lld\n", base, exponent, modulus, fastPowerMod(base, exponent, modulus));
return 0;
}
```
在这个例子中,`fastPowerMod`函数接受基数、指数和模数作为参数,并利用了异或运算(`^`)的一些性质来优化效率。
阅读全文