编程实现计算同余式ax≡b(mod m)的解
时间: 2023-05-29 22:05:08 浏览: 143
CULA解ax=b问题的代码
3星 · 编辑精心推荐
代码如下:
```python
def gcd(a, b):
if b == 0:
return a
return gcd(b, a % b)
def extended_euclid(a, b):
if b == 0:
return 1, 0, a
x, y, gcd = extended_euclid(b, a % b)
return y, x - (a // b) * y, gcd
def solve_congruence(a, b, m):
if gcd(a, m) != 1:
print("No solution exists")
return
x, y, gcd = extended_euclid(a, m)
x = (x % m + m) % m
return (x * b) % m
```
其中,`gcd(a, b)`是求a和b的最大公约数的函数,`extended_euclid(a, b)`是求a和b的扩展欧几里得算法的函数,`solve_congruence(a, b, m)`是计算同余式ax≡b(mod m)的解的函数。
使用时,调用`solve_congruence(a, b, m)`函数即可得到同余式的解。例如:
```python
print(solve_congruence(7, 3, 11)) # 输出8
```
这表示7x≡3(mod 11),解为x=8。
阅读全文