给出三个整数 a,b,m,求 a b modm 的值。写出C语言代码
时间: 2024-09-07 11:03:09 浏览: 69
x2-条件-求整数的最小值-3个输入_三个变量_用c语言求整数的最小值_源码
当然,这里是一个简单的C语言函数,用来计算 `(a^b) % m` 的值:
```c
#include <stdio.h>
// 函数声明
unsigned long long powerMod(int a, int b, int m);
int main() {
int a, b, m;
// 获取用户输入
printf("Enter a, b, and m: ");
scanf("%d %d %d", &a, &b, &m);
// 计算结果
unsigned long long result = powerMod(a, b, m);
// 打印结果
printf("%d^%d mod %d = %llu\n", a, b, m, result);
return 0;
}
// 函数定义
unsigned long long powerMod(int a, int b, int m) {
unsigned long long result = 1;
a = a % m;
while (b > 0) {
if (b % 2 == 1) {
result = (result * a) % m;
}
b = b >> 1;
a = (a * a) % m;
}
return result;
}
```
解释:
这段代码中定义了一个函数 `powerMod`,它接受三个整数参数 `a`、`b` 和 `m`,并返回 `(a^b) % m` 的结果。函数首先将 `a` 对 `m` 取模,确保所有中间计算结果都在 `m` 的范围内。接着,它使用快速幂算法来计算 `a` 的 `b` 次幂对 `m` 取模的结果。在 `powerMod` 函数中,我们检查 `b` 是否为奇数,如果是,则将当前结果乘以 `a` 并对 `m` 取模。然后将 `b` 右移一位(即除以 2),将 `a` 自乘并再次对 `m` 取模。这个过程重复进行,直到 `b` 为 0。这样可以有效地计算大指数幂的模,而不会导致整数溢出。
阅读全文