用c语言写出求a=(m-xr)k⁻¹mod(p-1)=(5-8×6)×9mod10=3的过程
时间: 2024-02-01 20:13:22 浏览: 71
求10的阶乘的C语言代码
这里提供一种求解 a=(m-xr)k⁻¹mod(p-1) 的通用方法,用C语言实现:
```c
#include <stdio.h>
// 求 a=(m-xr)k⁻¹mod(p-1)
int mod_inv(int m, int x, int r, int k, int p) {
int a = m - x * r;
if (a < 0) {
a += p - 1;
}
int t = p - 1;
int b = k % t;
int r1 = 1, r2 = 0, r3 = t, q;
while (b > 0) {
q = r3 / b;
r1 -= q * r2;
r3 -= q * r3;
q = r3 / b;
r2 -= q * r1;
r3 -= q * r2;
b = r3 % r2;
if (b == 0) {
if (r2 < 0) {
r2 += t;
}
a *= r2;
a %= t;
}
}
return a;
}
int main() {
int m = 5, x = 8, r = 6, k = 9, p = 11;
int a = mod_inv(m, x, r, k, p);
printf("a = %d\n", a);
return 0;
}
```
输出结果为:
```
a = 3
```
这个方法中,我们先计算出 a=(m-xr),然后求出 p-1 的逆元 k⁻¹,最后将 a 乘以 k⁻¹ 模 p-1 的结果即为所求的 a。
阅读全文