一次同余方程的c语言代码
时间: 2024-10-10 09:08:45 浏览: 59
一次同余方程是指形如 `ax ≡ b (mod m)` 的方程,其中 a、b 和 m 都是整数,`x` 是未知数。在C语言中,我们可以使用辗转相除法(也称为欧几里得算法)求解模意义下的解。下面是一个简单的C代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 计算两个整数的最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 求解同余方程 ax ≡ b (mod m)
int solveLinearCongruence(int a, int b, int m) {
int x = b; // 初始猜测值
while (gcd(x, m) != 1) { // 当余数为1时找到解
x += m; // 根据同余性质,x加m直到满足条件
}
return x;
}
int main() {
int a, b, m;
printf("请输入a, b, m的值:");
scanf("%d %d %d", &a, &b, &m);
if (m == 0 || a == 0) {
printf("错误:除数不能为0。\n");
return 1;
}
int result = solveLinearCongruence(a, b, m);
printf("解为 x ≡ %d (mod %d)\n", result, m);
阅读全文