求满足于下面条件的x:
其并不是总是存在,只要在a和m是互质的才存在,即
1、扩展欧几里德算法
实现如下:
int x, y;
int g = extended_euclidean(a, m, x, y);
if (g != 1) {
cout << "No solution!";
}
else {
x = (x % m + m) % m;
cout << x << endl;
}
2、二元求幂法
基于欧拉定理
,其中为欧拉函数。
如果m为素数,有,两边现乘以有
- a与m互质,
- m与素数,