用c编成实现模重复平方法的算法
时间: 2023-05-31 22:03:14 浏览: 80
以下是使用C语言实现模重复平方法的算法代码:
```c
#include <stdio.h>
int modExp(int a, int b, int n) {
int res = 1;
a = a % n;
while (b > 0) {
if (b % 2 == 1) {
res = (res * a) % n;
}
b = b / 2;
a = (a * a) % n;
}
return res;
}
int main() {
int a, b, n;
printf("Enter the values of a, b and n: ");
scanf("%d %d %d", &a, &b, &n);
printf("%d^%d mod %d = %d\n", a, b, n, modExp(a, b, n));
return 0;
}
```
在这个代码中,`modExp`函数使用了模重复平方法来计算`a^b mod n`。该函数接受三个参数:`a`,`b`和`n`,并返回计算结果。
在`modExp`函数中,首先将`a`对`n`取模。然后,使用循环来计算`a^b mod n`。在循环中,如果`b`是奇数,则计算`res = (res * a) % n`;如果`b`是偶数,则计算`a = (a * a) % n`。每次循环都将`b`除以2,直到`b`为0为止。最后返回`res`作为计算结果。
在`main`函数中,从用户输入中获取`a`,`b`和`n`的值,并调用`modExp`函数来计算`a^b mod n`。最后,输出计算结果。
注意:模重复平方法是计算模幂的高效算法,可以在很短的时间内计算出非常大的模幂。因此,我们可以使用该算法来加密和解密数据,例如在RSA加密算法中。
阅读全文