用c语言表示欧几里得扩展算法,在一行中给出两个整数M和N,两数字间以一空格分割,在一行中输出gcd(M,N)=a=bM+cN
时间: 2024-09-28 11:10:01 浏览: 32
C语言 扩展欧几里得算法代码
在C语言中,欧几里得扩展算法通常用于计算两个整数的最大公约数(GCD)。以下是一个简单的函数,它使用了辗转相除法(也称为欧几里得算法)来实现,并按照给定格式输出结果:
```c
#include <stdio.h>
// 函数声明:计算并返回两个整数的最大公约数
int gcd(int m, int n);
// 主函数,接收输入并输出结果
void print_euclidean_algorithm(int M, int N) {
int result = gcd(M, N);
printf("gcd(%d,%d)=", M, N);
if (result == 0) {
printf("0");
} else {
int a = M / result;
int b = N % result;
printf("%d=%d*", a, N); // 输出bN部分
if (b != 0) {
printf("+%d*", b, M); // 如果还有余数,则加上m的部分
}
printf("%d", result);
}
}
// 辗转相除法实现GCD
int gcd(int m, int n) {
if (n == 0) {
return m;
} else {
return gcd(n, m % n);
}
}
int main() {
int M, N;
scanf("%d %d", &M, &N);
print_euclidean_algorithm(M, N);
return 0;
}
```
在这个程序中,`print_euclidean_algorithm`函数首先计算`gcd(M, N)`,然后根据算法得到的商和余数构造字符串并打印出来。
阅读全文