有C语言的嘛?
时间: 2024-02-27 12:56:14 浏览: 12
当然可以,以下是C语言实现:
```c
#include <stdio.h>
// 求 a 和 b 的最大公约数,同时返回 a 和 b 的贝祖等式解 x 和 y
int extended_gcd(int a, int b, int *x, int *y)
{
if (b == 0) {
*x = 1;
*y = 0;
return a;
}
int d = extended_gcd(b, a % b, y, x);
*y -= a / b * (*x);
return d;
}
// 求 a 在模 b 意义下的乘法逆元,如果不存在则返回 0
int mod_inverse(int a, int b)
{
int x, y;
int d = extended_gcd(a, b, &x, &y);
if (d == 1) {
return (x % b + b) % b;
} else {
return 0;
}
}
int main()
{
int a = 3, b = 7;
int inv = mod_inverse(a, b);
if (inv) {
printf("%d在模%d下的逆元为%d\n", a, b, inv);
} else {
printf("%d在模%d下不存在逆元\n", a, b);
}
return 0;
}
```
注意,在C语言中,指针可以用来多返回函数值,如上面的extended_gcd函数中返回了a和b的最大公约数d,以及贝祖等式的解x和y。