c语言实现,输入自然数a,b,c,输出a^b mod c的结果。其中|a|>1000,b>1000,c是自然数。
时间: 2024-09-25 17:04:28 浏览: 48
C语言中常见问题的算法与程序总结
5星 · 资源好评率100%
在C语言中,为了计算大整数的幂模运算,可以使用一种叫做"快速幂算法"(也称为二分幂法)的方法,因为它能有效处理超出计算机内置数据类型的数值。下面是一个简单的实现,使用了递归和循环相结合的方式:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个大整数结构体,这里假设long long足够大
typedef long long BigInt;
// 快速幂函数,计算a的b次方对c取余
BigInt powerModulo(BigInt a, BigInt b, BigInt c) {
BigInt result = 1; // 初始化结果为1
a %= c; // 确保a始终小于c
while (b > 0) {
if (b % 2 == 1) { // 如果b是奇数
result *= a;
result %= c;
}
b /= 2; // 双倍b,将原问题缩小一半
a *= a; // 对于偶数次幂,只需平方a
a %= c; // 更新a
}
return result;
}
int main() {
int a, b, c;
printf("请输入三个自然数a、b和c(a > 1000, b > 1000, c 为自然数):");
scanf("%d%d%d", &a, &b, &c);
if (a <= 1000 || b <= 1000) {
printf("输入的a和b需要大于1000\n");
return 1;
}
// 调用powerModulo函数并打印结果
BigInt result = powerModulo(a, b, c);
printf("a^b mod c = %lld\n", result);
return 0;
}
```
阅读全文