快速幂取模c语言代码
时间: 2024-10-20 19:02:12 浏览: 38
快速幂取模是一种高效的算法,用于计算大整数的幂运算并限制结果在给定的模数范围内。其核心思想是利用指数的二进制表示,将幂次方拆分为一系列较小的乘法,大大减少了乘法次数。以下是C语言中实现快速幂取模的基本代码:
```c
#include <stdio.h>
// 计算 a^b % m 的结果 (快速幂)
long long fastPowMod(long long a, long long b, long long m) {
long long result = 1; // 初始化结果为1
while (b > 0) {
// 如果b是奇数,则将a乘入结果
if (b & 1) {
result = (result * a) % m;
}
// 将b除以2,将a自乘
a = (a * a) % m;
b >>= 1; // b右移一位相当于除以2
}
return result;
}
int main() {
long long base, exponent, mod;
printf("请输入底数、指数和模数:\n");
scanf("%lld %lld %lld", &base, &exponent, &mod);
long long powerResult = fastPowMod(base, exponent, mod);
printf("(%lld)^%lld mod %lld = %lld\n", base, exponent, mod, powerResult);
return 0;
}
```
在这个代码里,用户输入底数`base`、指数`exponent`以及一个模数`m`,程序会返回`base`的`exponent`次方对`m`取余的结果。
阅读全文