写一个求二次同余方程的代码
时间: 2024-11-09 10:30:23 浏览: 16
求解二次同余方程通常涉及中国剩余定理(Chinese Remainder Theorem, CRT),这是一个数论中的经典问题。以下是一个简单的Python示例,用于解决形如 `ax^2 + bx + c ≡ 0 (mod m)` 的二次同余方程,其中 a、b、c 和 m 都是整数。注意,这个例子假设了 m 不等于 0,并且存在整数解。
```python
def solve_quadratic_residue(a, b, c, mod):
# 根据二次同余方程求解公式
discriminant = b**2 - 4*a*c
if discriminant < 0 or (discriminant % 4 != 0 and discriminant % 8 == 7): # 负判别式或非平方模的情况
return None # 没有整数解
# 计算 x1 和 x2
x1 = (-b + discriminant**0.5) // (2 * a) % mod
x2 = (-b - discriminant**0.5) // (2 * a) % mod
return x1, x2
# 示例
a = 1
b = 2
c = 3
m = 7
solution = solve_quadratic_residue(a, b, c, m)
if solution is not None:
print(f"解为 {solution} (mod {m})")
else:
print("无整数解")
阅读全文